我在IIS上的一个应用程序中运行了以下代码:
<?php
echo "begin test";
$temp = shell_exec('whoami 2>&1');
print_r($temp);
echo "<br/>end test";
?>
这将输出:
begin test
end test
这意味着shell_exec
没有执行。此外,没有抛出异常,也没有输出任何警告。
我需要检查什么以确保它正确执行?
编辑:php.ini中的disable_functions
为空
2条答案
按热度按时间pkwftd7m1#
首先,我会打开
php.ini
文件,找到标记为disable_functions
的部分。确保禁用的函数列表中不包括shell_exec
。您也可以通过phpinfo
将此信息转储到浏览器屏幕上。这样做的好处是,您可以对shell_exec
执行ctrl-f。(一旦你拿到了你需要的东西,一定要再次关闭垃圾箱。)在任何情况下,如果您在一个禁用了
shell_exec
的服务器上启用shell_exec
,请格外小心,尤其是当您与他人共享该环境时。关闭它可能有一个非常好的原因。例如,流行的软件包经常会发现漏洞。而一个无法说服老板禁止这些软件包的共享主机管理员可能会禁用shell_exec
,重新开启X1 M7 N1 X可能是极其危险的。不管怎样,我希望这能有所帮助。
cgyqldqp2#
这个问题原来与PHP版本有关。从PHP 5更新到PHP 8解决了这个问题。