我使用 mod_fcgid 在 Apache 中运行 FastCGI PHP。但我注意到即使没有指定 .php 后缀,PHP 脚本也会执行。
例如:如果文件是mail.php
则http://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
谢谢。
答案1
这是常见行为吗?
这是您的具体设置。
解决方案: Options -MultiViews
Apache 手册说(你必须向下滚动一点):
的效果多视图如下:如果服务器收到请求/一些/目录/foo, 如果/一些/目录已启用 MultiViews,并且/一些/目录/foo做不是存在,则服务器读取目录以查找名为 的文件
foo.*
,并有效地伪造一个类型映射,为所有这些文件命名,为它们分配与客户端按名称请求其中一个文件时相同的媒体类型和内容编码。然后,它会选择与客户端要求最匹配的文件。
并且这个(没有后缀的执行)应该被禁用吗?
由你决定。默认情况下,此类行为是禁用的。