我想运行类似(在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程序的输出而不仅仅是作为另一个线程执行它。
如何做到这一点?
答案 0 :(得分:7)
你可以这样做:
exec($processOrderCommand, $output);
来自文档:
如果存在
output
参数,则指定的数组将填充该命令的每一行输出。尾随空格(例如 \ n )不包含在此数组中。请注意,如果数组已包含某些元素, exec()将附加到数组的末尾。如果您不希望函数附加元素,请在将数组传递给 exec()之前调用数组unset()。
为了更好地控制您的执行,您可以查看proc_open()
资源:
答案 1 :(得分:0)
关键是类路径在shell_exec中必须是绝对的 PHP脚本。
或者至少这是我能让它正确运作的唯一方法。基本上几乎不可能从环境到环境告诉php脚本运行JVM的相对目录是什么。
同样,它有助于为java设置绝对路径位置,例如usr /.../ bin / java