代码之家  ›  专栏  ›  技术社区  ›  Stephane Grenier

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

  •  9
  • Stephane Grenier  · 技术社区  · 14 年前

    我想运行类似的程序(在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 回复  |  直到 14 年前
        1
  •  7
  •   Colin Hebert    14 年前

    您可以这样做:

    exec($processOrderCommand, $output);
    

    从文档中:

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

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


    资源:

        2
  •  0
  •   Stephane Grenier    14 年前

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

    或者至少这是我能让它正常工作的唯一方法。基本上,从一个环境到另一个环境,几乎不可能知道PHP脚本运行的是什么相对目录。

    同时,它也为Java提供了绝对路径位置,例如URS/…/BI/Java。

    推荐文章