我正在尝试在 apache 2 下使用 FastCGI (mod-fcgid) 和 worker MPM 运行 PHP。我用这篇博文作为参考。
除了一件事,我似乎一切正常:
当 apache 隐式地为 index.php 提供服务时(我认为使用 mod_dir),它不使用为 .php 文件配置的处理程序,而只是将 PHP 文件作为静态内容提供服务。
但是,当我将 index.php 部分手动添加到 URL 时,它确实正确使用了处理程序,并且一切似乎都正常工作。其他 PHP 文件也可以正常工作。
澄清:
- http://example.com/提供 PHP 源文件本身。
- http://example.com/index.php通过 FastCGI 处理程序正确运行 PHP,并提供动态内容。
什么可能导致这种情况?任何提示表示赞赏!
编辑:更多细节:这是在 Ubuntu intrepid 系统上。
通过将两条 PHP 行添加到 mods-enabled/fcgid.conf,我得到了在 FastCGI 中工作的 .php,所以它现在看起来像:
<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
哦,伙计,我一直很愚蠢。
显然我只是在某个时间点配置错误,我的浏览器缓存了不正确的响应。
http://example.com/index.php然后工作了,可能是因为我在FastCGI PHP 工作后才开始尝试,所以缓存中没有不正确的响应。
换句话说,我最初问题中的信息是 mod-fcgid 中 mpm-worker + PHP 的工作配置!
无论如何感谢您的努力:-)
我想知道您对 mod_index 的使用是否绕过了 fastcgi 的 vhost(即与设置使用 php 处理程序的 vhost 分开)。
这可能很愚蠢,但请尝试:
当 Apache 模块以奇怪的方式交互时,我发现了一些奇怪的地方。当然,有时配置文件中的顺序非常重要。