PHP: 'java'未被识别为内部或外部命令

9

我正在尝试使用exec从PHP运行一个.jar应用程序:

exec('java -jar parser.jar $inputstring 2>&1', $output);

我可以在命令提示符下运行它,而java -version返回,所以我已经安装了Java。看起来这是一个路径问题,但我已经无计可施。

我尝试指定完整路径,将C:\Program Files (x86)\Java\jdk1.8.0_91\bin;添加到系统变量中,使用shell_exec,但都没有用。我得到了相同的错误。

任何帮助都将不胜感激。


3
展示如何添加完整路径。路径中有空格。如果您没有引用路径,例如shell_exec('"C:\Program files\...."),那么您将尝试运行名为c:\program.exe的程序,并带有参数files\.... - Marc B
我有:shell_exec('"C:\Program Files (x86)\Java\jdk1.8.0_91\bin\java.exe" -jar parser.jar $inputstring 2>&1'); 如果我没有2>&1,它就是空的。有了它,我得到相同的“java未被识别”错误。 - Anda
尝试回显“$PATH”环境变量,看看Java是否真的在您的路径中。PHP脚本是否在与您的命令行测试相同的用户下运行? - Rolf
你在指定完整路径时是否使用了双引号 " 来引用路径?例如 "C:\Program Files (x86)\Java\jdk1.8.0_91\bin\java.exe" -version - vincent163
顺便提一下,您可以尝试像这样添加前缀 cmd /c:exec('cmd /c "java -version"')。 - vincent163
显示剩余2条评论
1个回答

1
使用这个...
exec('java -jar parser.jar '.$inputstring.'2>&1', $output);
or
shell_exec("java -jar parser.jar $inputstring 2>&1 $output");
or
string exec ( 'java -jar parser.jar'  [, array &$output [, int &$return_var ]] )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接