我在单个 Nginx+PHP-FPM 7.4 服务器上托管多个低流量网站。出于安全考虑,我在我的 php.ini 中disable_functions,像这样:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
现在这些网站之一需要
proc_open
,所以我正在尝试通过php.ini
恢复这个网站的功能:
[PATH=/var/www/my-website]
disable_functions = mao,bao
phpinfo()
报告 Local value
与我的配置一致
但即使它看起来不错,它并没有真正起作用,我仍然得到
Process 类依赖于 proc_open,它在您的 PHP 安装中不可用
所以,问题是:有什么办法可以只为这个网站恢复disable_functions吗?
我能在 phpdoc 中找到的唯一线索是:
这个指令必须在php.ini中设置 例如,你不能在httpd.conf中设置
也许我使用的
[PATH=...]
语法是一样的?
我猜你应该为那些具有不同 php.ini 并启用禁用功能的站点设置不同的 PHP-FPM 池。 php-fpm 进程支持
-c
选项来指定要查找的目录 php.ini
。您可以使用该选项启动不同的php-fpm
池。
如果你不想弄乱多个
php.ini
,一个更简单的方法是从 disable_functions
中删除所需的功能,然后用 php_value
将它添加回你的正常 php-fpm 池。那么你需要为新游泳池做的就是没有那个php_value
.
池可以监听不同的端口/unix 套接字。然后使用
fastcgi_pass
为一个/多个特殊站点配置Nginx以使用不同的端口/ unix套接字。