PHP中的shell_exec不起作用

时间:2015-10-05 12:18:56

标签: php shell shell-exec

了shell_exec() 不能在我的localhost上工作。我阅读了很多网站来解决这个问题,但无法找到解决方案。 这段代码:

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

不提供任何输出。

我检入了php.ini disable_functions,但shell_exec未被禁用。 我做了error_reporting = E_ALL但是没有输出(没有错误)。我得到的只是一个空白屏幕。即使safe_mode已关闭。

如果我在上面的代码之后写了echo "BULB";,那就是打印&#34; BULB&#34;。

可能是什么问题?

1 个答案:

答案 0 :(得分:2)

您希望从env获得哪些信息?从您的评论中,我觉得您似乎正在尝试在Windows系统上使用Linux命令 - 这永远不会起作用。

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

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

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

shell_exec()

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

如果您需要代码能够在多个平台上运行,那么您需要在 public void myStatus(final String a, final boolean b) { secondStatust(new ArrayList<String>() {{ add(a); }}, b); } 调用之前编写其他代码以确定操作系统并找出要使用的正确命令。