我在一台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=...]
语法是一样的?
1条答案
按热度按时间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套接字。