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

chy5wohz  于 2023-04-20  发布在  Nginx
关注(0)|答案(1)|浏览(115)

我在一台Nginx+PHP-FPM 7.4服务器上托管了多个流量很低甚至为零的网站。出于安全考虑,我在php.ini中禁用了_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=...]语法是一样的?

omvjsjqw

omvjsjqw1#

我想你应该有一个不同的PHP-FPM pool为那些网站与不同的php.ini和禁用的功能启用. php-fpm进程支持-c选项指定目录查找php.ini.您可以启动一个不同的php-fpm池与该选项.
如果你不想处理多个php.ini,一个更简单的方法是从disable_functions中删除所需的函数,并将其与php_value一起添加到普通的php-fpm池中。然后,你需要为新池做的就是没有php_value
池可以监听不同的端口/ unix套接字。然后配置Nginx为一个/多个特殊站点使用fastcgi_pass使用不同的端口/ unix套接字。

相关问题