Php

什麼可能導致 apache2 無法通過 PHP FastCGI 處理程序執行 index.php 文件?

  • June 8, 2009

我正在嘗試在 apache 2 下使用 FastCGI (mod-fcgid) 和 worker MPM 執行 PHP。我用這篇博文作為參考。

除了一件事,我似乎一切正常:

當 apache 隱式地為 index.php 提供服務時(我認為是使用 mod_dir),它不使用為 .php 文件配置的處理程序,而只是提供 PHP 文件,就好像它是靜態內容一樣。

但是,當我將 index.php 部分手動添加到 URL 時,它確實正確使用了處理程序,並且一切似乎都正常工作。其他 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

我想知道您對 mod_index 的使用是否繞過了 fastcgi 的 vhost(即與設置使用 php 處理程序的 vhost 分開)。

這可能很愚蠢,但請嘗試:

<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 模組以奇怪的方式互動時,我發現了一些奇怪的地方。當然,有時配置文件中的順序非常重要。

引用自:https://serverfault.com/questions/22156