无法在Ubuntu上通过PHP执行Java jar文件

时间:2012-11-06 19:23:39

标签: java php ubuntu nginx

这是我的PHP代码:

<?php
exec('java -jar ~/src/epubcheck-*/epubcheck-*.jar -out /var/www/epubcheck-outputs/output.xml /var/www/AChristmasCarol.epub');

当我在终端中尝试命令时,它可以工作......但是在PHP中却没有。

另外我甚至没有获得java版本。但我确实看到了“嘿......”所以有些命令可以正常工作,有些则没有。

我正在使用NGiNX拥有我的服务器。

2 个答案:

答案 0 :(得分:2)

exec的文档解释了exec只返回输出的最后一行,因此您需要使用参数来捕获完整输出。

java -version将其输出发送到STDERR,而不是STDOUT,因此如果要捕获其输出,则需要将STDERR重定向到STDOUT用PHP命令。 但是,当您运行普通的Java程序时,这不是必需的。

$output = array();

exec('java -version 2>&1', $output);
print_r($output); // contains the correct output

exec('java -jar myfile.jar', $output);
print_r($output); // should also contain the correct output

如果仍然无效,请参阅我对Ibu答案的评论

编辑:实际答案,来自问题评论:

~/src/epubcheck-*/epubcheck-*.jar可能是一个问题 - ~当前用户的主目录的快捷方式 - 所以当您自己运行命令时,它意味着{{ 1}},但是当您将其作为网络服务器的用户运行时,它意味着完全不同的路径。尝试将其更改为要执行的jar文件的完整路径。

答案 1 :(得分:1)

在php手册中,它表示passthru返回void:

  

void passthru(string $ command [,int&amp; $ return_var])

所以什么都不会回应。