iis shell_exec()不工作时要检查什么?

ndh0cuux  于 2022-11-12  发布在  Shell
关注(0)|答案(2)|浏览(162)

我在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为空

pkwftd7m

pkwftd7m1#

首先,我会打开php.ini文件,找到标记为disable_functions的部分。确保禁用的函数列表中不包括shell_exec。您也可以通过phpinfo将此信息转储到浏览器屏幕上。这样做的好处是,您可以对shell_exec执行ctrl-f。(一旦你拿到了你需要的东西,一定要再次关闭垃圾箱。)
在任何情况下,如果您在一个禁用了shell_exec的服务器上启用shell_exec,请格外小心,尤其是当您与他人共享该环境时。关闭它可能有一个非常好的原因。例如,流行的软件包经常会发现漏洞。而一个无法说服老板禁止这些软件包的共享主机管理员可能会禁用shell_exec,重新开启X1 M7 N1 X可能是极其危险的。
不管怎样,我希望这能有所帮助。

cgyqldqp

cgyqldqp2#

这个问题原来与PHP版本有关。从PHP 5更新到PHP 8解决了这个问题。

相关问题