Apache-2.2

Apache 與 PHP 配置為 FastCGI 和沒有後綴的腳本

  • July 31, 2011

我使用 mod_fcgid 在 Apache 中使用 FastCGI PHP。但我注意到即使沒有指定 .php 後綴,PHP 腳本也會執行。

例如:如果文件是mail.phpthenhttp://example.com/mail.phphttp://example.com/mail返回 PHP 文件的相同輸出mail.php

這是常見的行為嗎?應該禁用這個(不帶後綴的執行)嗎?

我的 Apache 配置是:

AddHandler fcgid-script .php
<Directory "{WwwRoot}">
   Options -Indexes MultiViews FollowSymLinks +ExecCGI
   FCGIWrapper {ConfigsRoot}/fcgi-php5 .php
   Order allow,deny
   allow from all
</Directory>

用簡單的包裝

#!/bin/sh
PHP_FCGI_CHILDREN=3
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=2000
export PHP_FCGI_MAX_REQUESTS
/usr/bin/php5-cgi

謝謝。

這是常見的行為嗎?

這是你的具體設置。

解決方案: Options -MultiViews

**Apache Manual**說(你必須向下滾動一點):

MultiViews的效果如下:如果伺服器接收到*/some/dir/foo的請求,如果/some/dir啟用了 MultiViews,並且/some/dir/foo*不存在,則伺服器讀取目錄查找文件命名foo.*,並有效地偽造了一個類型映射,該類型映射為所有這些文件命名,為它們分配相同的媒體類型和內容編碼,如果客戶端按名稱要求其中一個。然後它選擇最符合客戶要求的匹配項。


應該禁用這個(不帶後綴的執行)嗎?

由你決定。預設情況下,此類行為被禁用。

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