什么原因导致 apache2 无法通过 PHP FastCGI 处理程序运行 index.php 文件?

什么原因导致 apache2 无法通过 PHP FastCGI 处理程序运行 index.php 文件?

我正在尝试使用 FastCGI (mod-fcgid) 在 Apache 2 下使用 worker MPM 运行 PHP。我曾使用过这篇博文作为参考。

看来我一切都正常了,除了一件事:

当 apache 隐式提供 index.php 服务(我认为是使用 mod_dir)时,它不使用为 .php 文件配置的处理程序,而只是将 PHP 文件作为静态内容提供。

但是,当我手动将 index.php 部分添加到 URL 时,它确实正确使用了处理程序,并且一切似乎都正常工作。其他 PHP 文件也运行良好。

澄清:

这可能是什么原因造成的?任何提示都值得感激!


编辑:更多细节:这是在 Ubuntu intrepid 系统上。

我通过将两行 PHP 添加到 mods-enabled/fcgid.conf 来使 .php 在 FastCGI 中运行,因此现在看起来像:

<IfModule mod_fcgid.c>
  AddHandler    fcgid-script .fcgi
  IPCConnectTimeout 20
  AddHandler fcgid-script .php
  FCGIWrapper /usr/lib/cgi-bin/php5 .php
</IfModule>

目录索引在 mods-enabled/dir.conf 中配置:

<IfModule mod_dir.c>
  DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

我不需要将 Options +ExecCGI 放在任何地方。实际上,我只是尝试注释掉 sites-enabled/000-default 中的块,FastCGI PHP 仍然正常工作,除了隐式 index.php

答案1

噢,我太蠢了。

显然,我只是在某个时间点配置错误,并且我的浏览器缓存了错误的响应。

http://example.com/index.php然后就成功了,可能是因为我才开始尝试我已经使 FastCGI PHP 运行,因此缓存中没有错误的响应。

换句话说,我最初的问题中的信息是 mod-fcgid 中 mpm-worker + PHP 的工作配置!

无论如何,感谢您的努力 :-)

答案2

我想知道您对 mod_index 的使用是否绕过了 fastcgi 的 vhost(即与设置使用 php 处理程序的 vhost 分开)。

答案3

这可能很愚蠢,但尝试一下:

<IfModule mod_fcgid.c>
   AddHandler    fcgid-script .fcgi
   IPCConnectTimeout 20
   AddHandler fcgid-script .php
   FCGIWrapper /usr/lib/cgi-bin/php5 .php
   DirectoryIndex index.php
</IfModule>

我发现 Apache 模块以奇怪的方式交互时会出现很多怪异现象。当然,有时配置文件中的顺序非常重要。

相关内容