php shell_exec("java -version") returning null


php shell_exec("java -version") returning null

我正在使用命令:

shell_exec("java -version");

以检测安装的Java版本。已安装Java IS。PHP脚本在用户"守护进程"下运行。从命令行运行此命令:

su daemon -c 'java -version'

输出

java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.1) (6b27-1.12.1-2ubuntu0.12.04.2)
OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)

我知道使用shell_exec可以与Java和PHP配合使用,因为在代码的其他地方,我正在使用它运行Java.jar文件

我是不是遗漏了什么?

2>&1添加到shell命令的末尾,以返回STDERRSTDOUT

$output = shell_exec("java -version 2>&1");

试试这个-exec('java -version', $output);

它是exec()而不是shell_exec()

更多详细信息,请点击此处

看起来Java正在直接将输出发送到stdout。如果您在命令行上运行带有反勾号的命令(正如文档中所说,该命令等效于),并尝试将其存储在变量中,您会看到它被打印出来,但没有存储在该变量中。

例如:

foo=`java -version`
print $foo // results in nothing

但是:

foo=`ls`
print $foo // results in the results of ls

您可以尝试将exec与输出变量一起使用。