我正在使用命令:
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命令的末尾,以返回STDERR
和STDOUT
。
$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与输出变量一起使用。