.htaccess 使用HTACCESS禁用单个目录的PHP(PHP-FPM)

.htaccess 使用HTACCESS禁用单个目录的PHP(PHP-FPM),.htaccess,php,.htaccess,Php,我想禁用特定目录中PHP文件的解析,并了解如何做到这一点。问题是,我的服务器使用PHP-FPM,当我尝试在httpd.conf文件中使用PHP\u flag时,我得到了无效命令“PHP\u flag”,可能拼写错误或由服务器配置中未包含的模块定义 在使用PHP-FPM的服务器上,如何使用位于web根目录上方的htaccess/httpd.conf文件禁用对给定web可访问目录中的PHP文件的解析 如何在给定的web环境中禁用PHP文件的解析 包含位于web上的htaccess/httpd.con

我想禁用特定目录中PHP文件的解析,并了解如何做到这一点。问题是,我的服务器使用PHP-FPM,当我尝试在httpd.conf文件中使用
PHP\u flag
时,我得到了
无效命令“PHP\u flag”,可能拼写错误或由服务器配置中未包含的模块定义

在使用PHP-FPM的服务器上,如何使用位于web根目录上方的htaccess/httpd.conf文件禁用对给定web可访问目录中的PHP文件的解析

如何在给定的web环境中禁用PHP文件的解析 包含位于web上的htaccess/httpd.conf文件的目录 使用PHP-FPM在服务器上创建根目录

如果没有mod_php(你不想要),你就无法用你的方式来表达你的想法,这就是为什么你会出现这个错误。PHP-FPM不是Apache模块。它独立于Apache运行。事实上,它的目的是在负载沉重的站点上使用,它可以控制所有的PHP进程

实现这一点的一种方法是使用
目录
指令在virtualhost文件中指定要运行PHP的确切路径。不要只使用PHP处理程序,而是使用
目录
指令将其括起来,并使用您希望它运行的实际路径。这里有一个例子

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html/
    ErrorLog /var/www/example.com/error.log
    CustomLog /var/www/example.com/access.log combined

    <Directory /path/to/php/only/folder/>
    #then you PHP handler stuff
    <IfModule mod_fastcgi.c>
        AddType application/x-httpd-fastphp5 .php
        Action application/x-httpd-fastphp5 /php5-fcgi
        Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi_example.com
        FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi_example.com -socket /var/run/php5-fpm_example.com.sock -pass-header Authorization
    </IfModule>
     </Directory>
</VirtualHost>

服务器管理员webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot/var/www/example.com/public\u html/
ErrorLog/var/www/example.com/error.log
CustomLog/var/www/example.com/access.log
#然后你需要PHP处理程序的东西
AddType应用程序/x-httpd-fastp5.php
动作应用程序/x-httpd-FASTP5/php5 fcgi
别名/php5-fcgi/usr/lib/cgi-bin/php5-fcgi_example.com
FastCgiExternalServer/usr/lib/cgi-bin/php5-fcgi_example.com-socket/var/run/php5-fpm_example.com.sock-通过头授权
然后重新启动Apache。这应该将其限制到该目录。您可能需要从另一个配置中删除php处理程序信息,这样它就不会被覆盖


注意,我没有测试这个解决方案。

自从Fedora27最近切换到php fpm以来,我也遇到了这个问题。不幸的是,使用mod_php的老方法不适用于php fpm

我确实在这里发现了另一个似乎更相关的问题:

其要点是在配置文件中使用
块,并使用
SetHandler
对于您不希望解释PHP代码的每个目录

e、 g:

应该足够了

<Directory "/path/to/no/phpfiles">
<Files "*.*">
SetHandler !
</Files>
</Directory>
<Files "*.*">
SetHandler !
</Files>