2

不要责骂我,因为我在搜索答案时当然发现了关于这个主题的多个主题。尽管如此,我的问题似乎有所不同,因为我在 exec() 调用中根本没有得到任何响应。以下是一些信息:

  • 我在 Apache 2.2.22 上运行 PHP 5.4.7 的 MacOS 上,并尝试从 Java 1.6.0_35 运行 jar 文件。
  • 我可以执行简单的命令,如“ls -l”、“which java”或“pwd”,但是任何尝试调用 java - 甚至“/usr/bin/java -version”都会失败而没有任何响应;PHP 脚本在 exec() 调用后停止丢弃任何其他命令
  • 我没有得到任何输出,既不是来自脚本本身,也不是任何错误日志。
  • 我以任何可能的方式尝试了 exec、shell_exec、system,但没有成功。
  • 我确保 Java 调用的每一部分,包括二进制文件、jar 文件等都存在,可以通过绝对路径访问;而且,当然,该命令在命令行上运行没有任何问题
  • 调用本身看起来像这样 '/usr/bin/java -Djava.awt.headless=true -jar /Users/twolff/Projects//bin/java/net.adternity.utils.xml2xls/dist/net.adternity.utils .xml2xls.jar --input="/private/tmp/report_rUEsDe.xml" --output="/private/tmp/report_7o1lFb.xls"'。
  • 我检查了 PHP 配置,但看不到任何错误(例如 disable_functions、safe_mode 等)
  • 我没有使用 DYLIB 环境变量问题运行 MAMP

我现在迷路了,在哪里继续我的调查,如果有人能帮助我,我会很高兴。这是我在测试脚本中运行的代码:

try {
  $output = "";
  $return_val = 0;
  echo exec('/usr/bin/java -Djava.awt.headless=true -jar /Users/twolff/Projects/<project_name>/bin/java/net.adternity.utils.xml2xls/dist/net.adternity.utils.xml2xls.jar --input="/private/tmp/report_rUEsDe.xml" --output="/private/tmp/report_7o1lFb.xls"', $output, $return_val);
  echo "<br/>";
  echo serialize($output);
  echo "<br/>";
  echo $return_val;
  echo "<br/>";
} catch(Exception $e) {
  echo $e->getMessage();
  echo "<br/>";
}
echo "DONE";

同样,如果我只使用“which java”(或除 Java 本身之外的任何其他内容),我会得到如下输出:

/usr/bin/java
a:1:{i:0;s:13:"/usr/bin/java";}
0
DONE

尝试运行 Java 应用程序不会返回任何内容,浏览器什么也不做。没有输出,没有错误日志。

感谢您查看这个。

托拜厄斯。

4

0 回答 0