execのドキュメントでは、出力の最後の行のみが exec によって返されると説明されているため、パラメーターを使用して完全な出力を取得する必要があります。
java -version
はその出力をSTDERR
ではなくに送信するため、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
ここで問題になる可能性があります-現在のユーザー~
のホームディレクトリのショートカットです-したがって、コマンドを自分で実行すると、 を意味しますが、Webサーバーのユーザーとして実行すると、まったく異なるパスを意味します. 実行したいjarファイルのフルパスに変更してみてください。/home/username/src/...