我刚刚安装了 phpdocumentor,但收到了奇怪的错误。我终于找到了问题所在。
Phpdocumentor 创建各种文件,例如 someFile.php.txt,其中包含 PHP 代码,但不打算进行解析。事实证明,我的服务器正在解析它们。我还测试了一个名为 someFile.txt 的文件名,但它没有被解析。
如何防止 PHP 服务器解析 someFile.php.txt 等文件?
我的服务器是 PHP 版本 5.4.20、Apache 2.2.15 和 CentOS 6.4。我的/etc/httpd/conf.d/php.conf
文件如下:
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
事实证明,CentOS Apache 的默认设置实际上允许这样做,并且它是一个已知漏洞。为了修复它,您需要编辑 Apache 配置设置。您的 PHP 设置通常位于/etc/httpd/conf.d/php.conf
。默认看起来像这样
AddHandler php5-script .php
AddType text/html .php
我们需要将其更改为
#AddHandler php5-script .php
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
AddType text/html .php
重新启动 Apache,这应该是解析任何具有扩展名的文件的结束.php
现在$
非常重要,因为这是使用regex
并在之内regex
a $
意思是“字符串结尾”。这意味着文件必须以.php
(即没有.php.txt
) 由 PHP 解析。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)