【问题标题】:PHP: 'java' is not recognized as an internal or external commandPHP:'java' 未被识别为内部或外部命令
【发布时间】:2016-11-11 05:07:47
【问题描述】:

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

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

我可以让它在 cmd 上运行,并且 java -version 返回,所以我安装了 java。这似乎是一个路径问题,但我束手无策。

我尝试指定完整路径,添加 C:\Program Files (x86)\Java\jdk1.8.0_91\bin;到系统变量,使用 shell_exec,无济于事。我犯了同样的错误。

任何帮助将不胜感激。

【问题讨论】:

  • 显示您如何添加完整路径。里面有空格。如果您没有引用路径,例如shell_exec('"C:\Program files\...."),那么您将尝试运行名为c:\program.exe 的程序,参数为files\....
  • 我有:shell_exec('"C:\Program Files (x86)\Java\jdk1.8.0_91\bin\java.exe" -jar parser.jar $inputstring 2>&1');如果我没有 2>&1 它是空白的。有了它,我得到了相同的“java”无法识别错误。
  • 2>&1 将标准错误重定向到标准输出,这就是您收到错误消息的原因。 shell_exec 只返回标准输出,所以你永远不会看到错误信息。
  • 您需要转义反斜杠。 shell_exec ('"C:\\Program Files\\...
  • 尝试回显$PATH环境变量,看看java是否真的在你的路径中。 PHP 脚本是否与您的命令行测试在同一用户下运行?

标签: java php exec


【解决方案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 ]] )

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 2015-05-24
    • 2019-03-16
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多