Apache 将 PHP 配置为 FastCGI 且脚本不带后缀

Apache 将 PHP 配置为 FastCGI 且脚本不带后缀

我使用 mod_fcgid 在 Apache 中运行 FastCGI PHP。但我注意到即使没有指定 .php 后缀,PHP 脚本也会执行。

例如:如果文件是mail.phphttp://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.*,并有效地伪造一个类型映射,为所有这些文件命名,为它们分配与客户端按名称请求其中一个文件时相同的媒体类型和内容编码。然后,它会选择与客户端要求最匹配的文件。


并且这个(没有后缀的执行)应该被禁用吗?

由你决定。默认情况下,此类行为是禁用的。

相关内容