从java程序执行php

时间:2013-08-12 23:55:44

标签: java php macos bash shell

这是我的代码:

String cmd = "bash -c \"php /Users/phyrrus9/Projects/java-web/test.php | say\"";
System.out.println("Executing: " + cmd);
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);

然而,它永远不会被执行。我可以从shell运行该命令,它工作正常。 这是test.php的内容

<?php
     echo hello;
?>

2 个答案:

答案 0 :(得分:1)

Runtime.exec()不是shell或命令解释器,并且不会以您认为的方式处理您的命令。 exec()的单字符串参数版本在空格上做了一个简单的脑死分裂,所以你的引号和转义引号都没有意义;他们永远不会以你的思维方式来打击它。

始终始终使用其中一位执行String[] cmdarray

的高管

在这种情况下你的args是

"bash"
"-c"
"\"php /Users/phyrrus9/Projects/java-web/test.php | say\""

也就是说,您正在运行bash - 您提供的第一个arg是-c,第二个arg是字符串。

另请参阅this answer以了解如何Execute external program from Java的更一般性问题。

答案 1 :(得分:0)

您无法从Process或Runtime类运行它,因为PHP是服务器端脚本,这意味着它需要一台服务器才能运行它。

您需要使用HTTPDefaultClient类。

看看这个site它可能对你有帮助。