0

这是我的代码:

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;
?>
4

2 回答 2

1

Runtime.exec()不是 shell 或命令解释器,并且没有按照您认为的方式处理您的命令。exec() 的单字符串参数版本对空格进行了简单的脑死拆分,因此您的引号和转义引号毫无意义;他们永远不会像你想的那样去抨击。

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

在这种情况下,您的参数是

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

也就是说,你正在运行bash——你给它的第一个参数是-c,第二个参数是字符串。

另请参阅如何从 Java 执行外部程序的更一般问题的答案

于 2013-08-13T00:22:05.920 回答
0

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

您需要使用 HTTPDefaultClient 类。

看看这个网站,它可能对你有帮助。

于 2013-08-13T00:18:18.870 回答