无法在php.ini中禁用shell_exec

时间:2013-06-07 08:35:47

标签: php apache2 plesk

我很惊讶,以前绝对没见过这个问题 - 我一直忙着整个晚上和早上试图通过php.ini禁用shell_exec(以及其他一些功能),但似乎没什么用。如果我运行phpinfo(),则本地值表明功能已禁用且未设置主值。

但是,如果我尝试运行该函数(函数类似于shell_exec()),它仍然有效,给我输出,而不是被禁用。

任何帮助都会非常感激,我们完全迷失了。用Plesk 11运行Ubuntu。

亲切的问候,

2 个答案:

答案 0 :(得分:0)

服务计划>你的计划> PHP设置>在文本框“其他配置指令”中写下“disable_functions = shell_exec” - 点击“更新和放大”。同步

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

我已经检查过disable_function在应用于“本地值”和“主值”之前不起作用。当PHP作为Apache模块工作时,disable_function不适用于主部件。我确定它发生了,因为在apache mudule中有“加载配置文件”,它位于/ etc / apache /或/ etc / httpd /中。 因此,PHP设置是从两个独立的php.ini文件合并而来的 - 来自全局和订阅的php.ini。

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

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

答案 1 :(得分:0)

我可以确认这一点(而不是运行Plesk)。我在我的PHP-FPM php.ini文件中有这个:

[HOST=mycustomer.com]
upload_max_filesize=7M
disable_functions=phpinfo,exec,shell_exec,system,passthru

包含

的脚本
<?php
  phpinfo();

有效(虽然它不应该!)并实际显示:

upload_max_filesize 7M
...
disable_functions   phpinfo,exec,shell_exec,system,passthru

所以有些奇怪的事情正在发生。加载了正确的文件和部分(我可以从phpinfo输出中看到),但设置无效,而不是disable_functions,至少。

对我来说看起来像某种错误。