用php执行java .jar文件

时间:2011-07-02 05:50:48

标签: php exec

我创建了一个将两个wave文件连接在一起的.jar文件。我用命令提示符调用它。就像这样。

java -jar WaveAppender.jar 1.wav 2.wav out.wav

我正在尝试使用php来执行此.jar文件,但下面的代码似乎不起作用

$theFiles = Array("1.wav","2.wav","output.wav");
exec("java -jar WaveAppender.jar $theFiles");

我没有收到任何错误,但是没有写出out.wav。

我是否错误地调用了exec()?

2 个答案:

答案 0 :(得分:4)

您不能在字符串中直接使用数组。生成的结果命令行将是:

java -jar WaveAppender.jar Array

如果您真正想要的是

java -jar WaveAppender.jar 1.wav 2.wav 3.wav

然后你需要这样做:

exec("java -jar WaveAppender.jar " . implode (' ', $theFiles));

答案 1 :(得分:3)

这里有几点需要注意:

  1. 许多托管服务提供商认为exec是一个危险的函数调用。因此,它可能无法在您的服务器上使用。有关检查系统是否已启用exec的详细信息,请参阅this discussion

  2. 您的文件存储在一个数组中。鉴于您发布的代码,您实际上是将此字符串传递给exec

    java -jar WaveAppender.jar Array

    要解决此问题,请尝试使用implode将数组的所有元素连接成一个字符串,如下所示:

    exec('java -jar WaveAppender.jar ' . implode(' ', $theFiles));

    有关implode的详细信息,请参阅the PHP docs

  3. 请记住exec返回一个值,您还可以传入一个数组以填充程序的所有输出。这对于处理Web应用程序中的错误很有用。有关exec的详细信息,请参阅the PHP docs