我正在使用命令:
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文件。
我在这里错过了什么吗?
答案 0 :(得分:2)
将2>&1
添加到您的shell命令的末尾,以便返回STDERR
以及STDOUT
。
$output = shell_exec("java -version 2>&1");
答案 1 :(得分:0)
答案 2 :(得分:0)
看起来Java正在直接将输出发送到stdout。如果在命令行上运行带有反引号的命令(因为documentation表示该命令相当于),并尝试将其存储在变量中,您将看到它被打印出来,但没有存储在变量
例如:
foo=`java -version`
print $foo // results in nothing
然而:
foo=`ls`
print $foo // results in the results of ls
您可以尝试使用exec替换输出变量。