Php
什麼可能導致 apache2 無法通過 PHP FastCGI 處理程序執行 index.php 文件?
我正在嘗試在 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
我想知道您對 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 模組以奇怪的方式互動時,我發現了一些奇怪的地方。當然,有時配置文件中的順序非常重要。