无法在php.ini中禁用shell_exec

无法在php.ini中禁用shell_exec,php,apache2,plesk,Php,Apache2,Plesk,我震惊了,我以前从未见过这个问题——我整个晚上和早上都在忙着通过php.ini禁用shell_exec(和其他一些函数),但似乎什么都不起作用。如果运行phpinfo(),则本地值表示函数已禁用,并且未设置主值 但是,如果我尝试运行该函数(类似于shell_exec()的函数),它仍然可以工作,为我提供输出,而不是被禁用 任何帮助都将不胜感激,我们完全迷路了。用Plesk11运行Ubuntu 亲切问候,服务计划>您的计划>PHP设置>在文本框“其他配置指令”中写入“禁用函数=shell执行”-单

我震惊了,我以前从未见过这个问题——我整个晚上和早上都在忙着通过php.ini禁用shell_exec(和其他一些函数),但似乎什么都不起作用。如果运行phpinfo(),则本地值表示函数已禁用,并且未设置主值

但是,如果我尝试运行该函数(类似于shell_exec()的函数),它仍然可以工作,为我提供输出,而不是被禁用

任何帮助都将不胜感激,我们完全迷路了。用Plesk11运行Ubuntu


亲切问候,

服务计划>您的计划>PHP设置>在文本框“其他配置指令”中写入“禁用函数=shell执行”-单击更新和同步

所有未锁定的订阅都在其php.ini文件中获取此指令

我已经检查过,禁用函数在应用到“本地值”和“主值”之前不起作用。当PHP作为Apache模块工作时,禁用函数不应用于主部件。我确信这是因为在ApacheMudule中有一个“加载的配置文件”,它位于/etc/apache/或/etc/httpd/中。 因此,PHP设置是从两个独立的PHP.ini文件合并而成的——来自全局文件和来自订阅的PHP.ini文件

在FastCGI模式下,“加载的配置文件”是一个订阅级别php.ini,因此只有一个php.ini是有效的

因此,以下步骤显而易见: -使用FastCGI并禁止为您的用户更改此模式(plesk中有此功能) 或 -对于Apache模块,将相同的指令添加到global php.ini

我可以确认这一点(并且不运行Plesk)。我的PHP-FPM PHP.ini文件中有:

[HOST=mycustomer.com]
upload_max_filesize=7M
disable_functions=phpinfo,exec,shell_exec,system,passthru
还有一个剧本

<?php
  phpinfo();
所以发生了一些奇怪的事情。加载了正确的文件和节(我可以从phpinfo输出中看到),但设置没有效果,至少禁用功能没有效果


在我看来,这似乎是某种错误。

我们更改了几次,phpinfo显示了disable函数,但我们仍然可以使用shell\u exec。在检查shell\u exec的同一位置,检查使用了哪个php.ini。订阅中使用了哪个PHP处理程序?Apache模块?快速CGI?尝试将PHP处理程序更改为FastCGI。
upload_max_filesize 7M
...
disable_functions   phpinfo,exec,shell_exec,system,passthru