如何为我的 Nginx+PHP-FPM 堆栈上的部分虚拟主机(当前仅有 1 个)禁用某些 php 函数?
答案1
您可以为您的主机创建一个单独的池,并在其中放入受限制的功能,如下所示(在最后一行):
[example.com]
listen = 127.0.0.1:9001
listen.allowed_clients = 127.0.0.1
user = web1
group = client0
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
chdir = /
php_admin_value[open_basedir] = /var/www/www.example.com:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin
php_admin_value[disable_functions] = dl,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
答案2
其详细说明如下手册页在设置进程池时 - 使用环境变量附加到 disable_functions ini 设置。
答案3
事实上,似乎不能。
disable_functions
只能在 php.ini 中设置(PHP_INI_SYSTEM)。
尽管 FPM 的 PHP 池看起来像一个单独的进程- 看https://supportex.net/blog/2012/02/lemp-disabling-php-functions/