了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;。
可能是什么问题?
答案 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);
}
调用之前编写其他代码以确定操作系统并找出要使用的正确命令。