如何使用 PHP-FPM 在本地恢复 disable_functions?

问题描述 投票:0回答:1

我在单个 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 security nginx fpm
1个回答
0
投票

我猜你应该为那些具有不同 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套接字。

© www.soinside.com 2019 - 2024. All rights reserved.