0

我惊呆了,以前从未见过这个问题——我整个晚上和早上都在忙着试图通过 php.ini 禁用 shell_exec(和其他一些功能),但似乎没有任何效果。如果我运行 phpinfo(),则本地值表明功能被禁用并且未设置主值。

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

任何帮助将不胜感激,我们完全迷失了。使用 Plesk 11 运行 Ubuntu。

亲切的问候,

4

2 回答 2

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

于 2013-06-07T14:33:23.123 回答
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 无效。

对我来说似乎是某种错误。

于 2013-07-18T13:53:14.563 回答