如何在PHP中运行Java程序并获取输出?

时间:2010-09-24 17:55:27

标签: php exec

我想运行类似(在myProgram.sh中):

java -cp whatever.jar com.my.program $1
在PHP中

并读取输出。

到目前为止,我有类似的内容:

$processOrderCommand = 'bash -c "exec nohup setsid /myProgram.sh ' . $arg1 . ' > /dev/null 2>&1 &"';
exec($processOrderCommand);

但我真正喜欢的是能够在PHP脚本中获取java程序的输出而不仅仅是作为另一个线程执行它。

如何做到这一点?

2 个答案:

答案 0 :(得分:7)

你可以这样做:

exec($processOrderCommand, $output);

来自文档:

  

如果存在output参数,则指定的数组将填充该命令的每一行输出。尾随空格(例如 \ n )不包含在此数组中。请注意,如果数组已包含某些元素, exec()将附加到数组的末尾。如果您不希望函数附加元素,请在将数组传递给 exec()之前调用数组unset()

为了更好地控制您的执行,您可以查看proc_open()


资源:

答案 1 :(得分:0)

  

关键是类路径在shell_exec中必须是绝对的   PHP脚本。

或者至少这是我能让它正确运作的唯一方法。基本上几乎不可能从环境到环境告诉php脚本运行JVM的相对目录是什么。

同样,它有助于为java设置绝对路径位置,例如usr /.../ bin / java