【问题标题】:PHP exec() returning empty array (no output) when executing java -jar command执行 java -jar 命令时 PHP exec() 返回空数组(无输出)
【发布时间】:2014-11-10 00:02:39
【问题描述】:

我有一个可以运行的 web php 应用程序。我正在开发 win 7 并使用 apache。

现在我正在尝试在 php 中执行这个 java 命令并在现场显示结果:

exec("java -jar C:\webroot\ipt\themes\ipt\views\site\Skills.jar 5 10 5.5 10 2 5 8 3 10 6 11 2 15 4", $output);

    for ($index = 0; $index < count($output); $index++) {
        echo $output[$index]." ";
    }

但是 $output 是一个空数组 - 没有输出。 我没有收到任何错误或崩溃。输出只是一个基本字符串。 我尝试在 cmd 中输入相同的命令,它可以正常工作 - 返回预期的输出。

所以我尝试了不同的命令来查看 exec() 是否有问题,所以我尝试了“ipconfig”,它完美地显示了站点上的输出。

因此,我认为它与 PHP 或 Apache(或两者)有关。

我搜索了一些其他人的类似问题并尝试了:

  • 在命令中输入 java 的完整路径:C:\Program Files (x86)\Java\jre1.8.0_20\bin\java - jar ... - 不起作用
  • 将 .jar 文件的权限更改为完全访问(包括父目录) - 无效。

所以我想问一下是否有人不知道这个问题的解决方案。

谢谢

【问题讨论】:

标签: java php apache jar


【解决方案1】:

确保您能够直接在控制台中运行此命令而不会出现任何问题。

将您的 exec 更改为以下内容:

exec("java -jar C:\\webroot\\ipt\\themes\\ipt\\views\\site\\Skills.jar 5 10 5.5 10 2 5 8 3 10 6 11 2 15 4 2&gt;&amp;1", $output);

【讨论】:

  • 谢谢。这行得通,但只是一个小问题:这个 '2>&1' 部分是什么意思?
  • 它确保输出到处理 shell 执行的 PHP 处理程序。
猜你喜欢
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 2013-09-07
相关资源
最近更新 更多