我在CentOS 7上有一个简单的Apache,mod_php服务器。我已经禁用了php.ini中的exec函数,但是我需要在一个Vhost上使用它。 现在显然我知道我不能使用多个php.ini文件,我知道我不能更改php.ini文件之外的disable_functions设置,所以我尝试了其他的想法。
显然,我的第一个select是使用fastcgi或者suPHP等,但是如果不打断服务器,我不能让它们工作,尽pipe我最终可以使它们工作,但我宁愿find一个不同的解决scheme,并坚持简单的mod_php。
我的第二个想法是安装Nginx和php-fpm并让它在另一个端口上侦听,但是尽pipe将disable_functions设置为空值,它仍然读取php.ini文件,从而禁用了php_exec函数。
那么有没有一个相对简单的方法来实现这一点,而不必重置与FastCGI的Apache?
那么我有一个很好的答案,多亏了Aaron的指点
使用这个安装Suhosin
yum安装php-devel
wget http://download.suhosin.org/suhosin-0.9.33.tgz
tar -xvf suhosin-0.9.33.tgz
cd suhosin-0.9.33
phpize
。/configuration
使
进行安装
echo'extension = suhosin.so'> /etc/php.d/suhosin.ini
服务httpd重启
yum安装php-devel
yum安装php-suhosin
将此添加到php.ini文件的底部(黑名单函数列表):
suhosin.executor.func.blacklist = “exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source”
最后,对于应该允许使用禁用函数的VirtualHost,添加以下内容:
php_admin_value suhosin.executor.func.blacklist =
Suhosin强制脚本在达到黑名单function时退出,而不是像本地禁用function设置那样忽略function。