Chef Apache2 与来自超市的 mod php 食谱 - 没有这样的文件或目录

Chef Apache2 with mod php cookbook from Supermarket - getting no such file or directory

寻求一些指导

我正在尝试使用 Chef Supermarket 的 Apache2 食谱。我正在使用以下代码创建虚拟主机:

#Install shop
directory '/var/www/html/shop/' do
  owner 'www-data'
  group 'www-data'
  mode '0755'
  action :create
end

#Configures Apache Site for shop 
web_app "shop" do
   template 'web_app.conf.erb'
   server_name "www.xyz.com.au"
   server_aliases ["www.xyz.com.au"]
   docroot "/var/www/html/shop"
   options '-Indexes'
   cookbook 'apache2'
   allow_override
end

这工作正常,我可以正常连接到 http 服务器。但是当我调用 mod_php:

apache_module "mod_php" do
  enable true
end

我收到以下错误。使用这本食谱启用 PHP 是不是我做错了什么?

apache2: Syntax error on line 121 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/mod_php.load: Cannot load /usr/lib/apache2/modules/mod_mod_php.so into server: /usr/lib/apache2/modules/mod_mod_php.so: 
cannot open shared object file: No such file or directory

所以我不确定该怎么做,但我想我会问一下,看看是否有人有使用这本食谱的经验? https://supermarket.chef.io/cookbooks/apache2#readme

如果有人知道如何将 php 配置变量传递到 php.ini,我会很感兴趣。我从这本食谱上看不到吗?

谢谢,

-nat

如本食谱的文档所示,食谱将尝试根据您传入的名称推断各种信息。在您的例子中,这是 mod_php。这默认为查找 mod_mod_php 的文件名。您可以根据需要提供不同的文件名,它可能看起来像这样。

apache_module "php7" do
  filename "libphp7.so"
end

我会先检查 /usr/lib/apache2/modules/ 中安装了哪些模块。您可能有不同版本的 php,或者需要先安装相应的模块。

编辑: 将第一行从 apache_module "mod_php" do 更改为 apache_module "php7" do 也很重要。模块的默认名称推断如下:

identifier - String to identify the module for the LoadModule directive. Not typically needed, defaults to #{name}_module

或者,您可以将标识符设置为 'php7'(或模块的任何名称)。