Apache-2.2
Apache 與 PHP 配置為 FastCGI 和沒有後綴的腳本
我使用 mod_fcgid 在 Apache 中使用 FastCGI PHP。但我注意到即使沒有指定 .php 後綴,PHP 腳本也會執行。
例如:如果文件是
mail.php
thenhttp://example.com/mail.php
並http://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.*
,並有效地偽造了一個類型映射,該類型映射為所有這些文件命名,為它們分配相同的媒體類型和內容編碼,如果客戶端按名稱要求其中一個。然後它選擇最符合客戶要求的匹配項。應該禁用這個(不帶後綴的執行)嗎?
由你決定。預設情況下,此類行為被禁用。