php shell_exec(“java -version”)返回null

时间:2013-07-09 20:08:44

标签: java php linux

我正在使用命令:

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文件。

我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:2)

2>&1添加到您的shell命令的末尾,以便返回STDERR以及STDOUT

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

答案 1 :(得分:0)

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

这是exec()而不是shell_exec()

More detail here

答案 2 :(得分:0)

看起来Java正在直接将输出发送到stdout。如果在命令行上运行带有反引号的命令(因为documentation表示该命令相当于),并尝试将其存储在变量中,您将看到它被打印出来,但没有存储在变量

例如:

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

然而:

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

您可以尝试使用exec替换输出变量。