exec的文档解释说,exec 只返回输出的最后一行,因此您需要使用参数来捕获完整的输出。
java -version
将其输出发送到STDERR
, not ,因此如果您想使用 PHP 捕获该命令的输出,则STDOUT
需要重定向STDERR
到。STDOUT
但是,当您运行普通的 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
这里可能是个问题 -~
是当前用户主目录的快捷方式- 所以当你自己运行命令时,它意味着/home/username/src/...
,但是当你作为你的网络服务器的用户运行它时,它意味着一个完全不同的路径。尝试将其更改为要执行的 jar 文件的完整路径。