从 Debian squeeze 升级到 wheezy 后,Apache2 + mod_fcgid + php 停止工作

从 Debian squeeze 升级到 wheezy 后,Apache2 + mod_fcgid + php 停止工作

我已经将我的服务器从 Debian squeeze 更新为 Debian wheezy。此服务器上有几个 apache2 vhost,它们通过 mod_fcgid 运行 php(我也在使用 mod_suexec,但这不是问题所在)。更新后,我的所有 php 站点都不再工作,如果我请求运行 php 的站点,apache2 会提供 php 源代码。我的所有日​​志文件

  • apache2/错误日志
  • apache2/访问日志
  • apache2/suexec.log
  • 以及虚拟主机错误/访问日志

没有出现任何错误,甚至没有警告。所有必要的模块都已安装并加载。我花了几个小时寻找可能的解决方案,却没有付出任何努力。这是一个示例 vhost 文件(“敏感”数据被替换,用户/组和域):

<VirtualHost *:80>
    ServerName example.com
    SuexecUserGroup john-doe john-doe
    AddHandler fcgid-script .php
    DocumentRoot "/var/www/example.com/data"
    DirectoryIndex index.php index.html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory "/var/www/example.com/data">
        Options Indexes MultiViews FollowSymLinks +ExecCGI
        FCGIWrapper /var/www/example.com/php-fcgi/php-fcgi-starter .php
        Order allow,deny
        allow from all
        AllowOverride All
    </Directory>
    ErrorLog /var/www/example.com/logs/error.log
    LogLevel warn
    CustomLog /var/www/example.com/logs/access.log combined
    ServerSignature Off
</VirtualHost>

有人有什么想法吗?我问了这个问题超级用户网也希望一切都好。

答案1

现在我自己偶然发现了解决方案。问题是由 mod_fcgid 的更新引起的,它改变了 vhost 配置中使用的指令。可以看到这些变化这里(这是我偶然发现的)。

指令

FCGIWrapper /var/www/example.com/php-fcgi/php-fcgi-starter .php

必须改为

FcgidWrapper /var/www/example.com/php-fcgi/php-fcgi-starter .php

文档说

“所有指令都已重命名,以便使用通用前缀“Fcgid”。指令名称中的下划线已被消除,取而代之的是 CamelCase。旧的指令名称仍然有效,但已被弃用。要修复您的配置,您可以使用 sed 脚本 build/fixconf.sed。”

但目前看来旧的指令名称不再起作用。这些更改对我来说很有效,也许这对其他人也有帮助。

相关内容