PHP 中的 shell_exec 无效

shell_exec in PHP is not working

shell_exec() 不在我的本地主机上工作。我阅读了很多网站来解决这个问题,但找不到解决方案。 此代码:

    $output = shell_exec("env");
    print "<pre>$output</pre>";

不提供任何输出。

我签入了 php.ini disable_functionsshell_exec 没有被禁用。 我做了 error_reporting = E_ALL 但还是没有输出(没有错误)。我得到的只是一个空白屏幕。连 safe_mode 都关了。

如果我在上面的代码后写 echo "BULB"; 它会打印 "BULB".

可能是什么问题?

您希望从 env 获得什么信息?从您的评论来看,在我看来,您似乎正试图在 Windows 系统上使用 Linux 命令——这永远行不通。

在Linux系统上,env命令本身就像returns已定义的环境变量列表。但是 env 在 Windows 中不是有效命令。

如果您只是想查找环境变量列表,实际上可以在 PHP 中获得,而无需使用 shell 命令。 PHP 有一个内置的全局变量 $_ENV,其中包含程序声明时定义的所有环境变量的副本。只需 print_r($_ENV) 即可看到它们。

另一方面,如果您出于某种原因确实需要使用 shell_exec(),则需要考虑您使用的操作系统。在 Linux 上,您将使用 env 命令。 Windows 上的等效项是 set,没有任何参数。所以你的代码变成:

$output = shell_exec("set");

请注意,输出格式可能与您在 Linux 上获得的格式不同,因此如果您要解析它,则该代码也必须更改。

如果您需要您的代码能够 运行 在多个平台上,那么您需要在 shell_exec() 调用之前编写额外的代码以确定操作系统并计算出正确的命令以使用。