【问题标题】:How to set php_flag per-directory using php-fpm?如何使用 php-fpm 为每个目录设置 php_flag?
【发布时间】:2015-10-15 12:34:09
【问题描述】:

我的问题

我想关闭特定文件夹中的php引擎,用户可以在其中上传文件,但我似乎无法弄清楚。

PHP 版本: 5.5.26

PHP模式: php-fpm (FastCGI Process Manager)

Apache 版本: 2.2.29

服务器: Synology DS212j - DSM 5.2)

还有什么需要知道的吗?


到目前为止我所做的尝试:

从 .htaccess 文件中禁用

php-fpm(和其他一些模式)不支持此功能,它会给出 500 错误,记录:

Invalid command 'php_value', perhaps mis-spelled or defined by a module not included in the server configuration.

每个目录的 php.ini

我尝试了每个目录的 php.ini-files(在 avatars 目录中添加了一个额外的 php.ini-file),但没有成功。 PHP 从未加载过该文件。不知道我做错了什么,我尝试将它命名为 php.ini.user.ini,都没有成功。

主 php.ini 部分

我也尝试在 php.ini 主文件中使用一个部分,

[path=/path/to/secure/dir]
engine = off
max_execution_time = 300

当我这样做并在安全目录中的文件中运行 phpinfo() 时,max_execution_time 设置为 300(因此文件已重新加载),但引擎仍在运行(我假设,因为 @987654328 @ 显示)。

php-fpm 池

我也读过关于 php-fpm 池的信息,但在我看来,您只能按域/vhost 指定池,我错了吗?

编辑虚拟主机

我尝试在 <Directory /path/to/secure/dir> 部分按照建议的here 从 vhosts 文件中禁用它(这就是它的名称吗?),但这也不支持。


额外信息

我正在构建一个基于Paniques's HUGE 的应用程序。在上传目录中的the .htaccess-file 中,php 引擎已关闭(出于安全原因),使用php_flag engine off

【问题讨论】:

    标签: php php-ini


    【解决方案1】:

    试试这个 .htaccess 文件:

    <Files "*.php">
      SetHandler none
      SetHandler default-handler
      Options -ExecCGI
      RemoveHandler .php
    </Files>
    <IfModule mod_php5.c>
      php_flag engine off
    </IfModule>
    

    应该同时使用 php-fpm 和 mod_php。

    【讨论】:

      【解决方案2】:

      您也可以在任何 httpd.conf 文件中执行类似的操作:

      <Directory "/path/to/secure/dir">
      <Files "*.*">
      SetHandler !
      </Files>
      </Directory>
      

      HTT Hardrain,我从他的回答中得到了这个技巧:Apache: Disable php in a directory

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-13
        • 2016-10-25
        • 1970-01-01
        • 2011-11-06
        • 2020-06-09
        • 1970-01-01
        • 2016-09-29
        • 2015-05-19
        相关资源
        最近更新 更多