我在Centos 6.10中使用虚拟主机的.conf定义文件来处理多个文件夹:
<DirectoryMatch ^/var/www/mysite/htdocs/(nophpexecutefolder1|nophpexecutefolder2)>
php_admin_value engine Off
</DirectoryMatch>
然而,即使它不像通常解析php代码那样,当执行echo时,它仍会从.php文件输出诸如变量声明和文本等内容。
<?php
echo "<strong>PHP CODE EXECUTED!!";
$a=1;
$b=2;
echo $a+$b;
以上在网页浏览器中产生了什么?
PHP CODE EXECUTED!!"; $a=1; $b=2; echo $a+$b;
这可能会向用户公开一些代码,这并不理想。
因此,在 .htaccess 中最好与以下内容结合使用:
<FilesMatch ".*.(php|php3|php4|php5|php6|php7|php8|phps|pl|py|pyc|pyo|jsp|asp|htm|html|shtml|phtml|sh|cgi)$">
Order Deny,Allow
Deny from all
</FilesMatch>
以上代码将阻止访问任何上述文件扩展名,但允许其他扩展名(如图像、CSS等)以通常的方式被访问。当访问.php文件时会出现错误:
Forbidden
You don't have permission to access /nophpexecutefolder1/somefile.php on this server.
<IfModule mod_php5.c>
...</IfModule>
中。 - Halil Özgürphp_admin_flag
,但不能在 .htaccess 文件中使用。任何使用php_admin_value
设置的指令类型都不能被 .htaccess 或 ini_set() 覆盖。要清除先前设置的值,请将值设为 none。 - pylover