用php执行java.jar文件

用php执行java.jar文件,php,exec,Php,Exec,我已经创建了一个.jar文件,它将两个wave文件连接在一起 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错误吗?不能像在字

我已经创建了一个.jar文件,它将两个wave文件连接在一起

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错误吗?

不能像在字符串中那样直接使用数组。生成的命令行将是:

java -jar WaveAppender.jar Array
如果你真正想要的是

java -jar WaveAppender.jar 1.wav 2.wav 3.wav
然后,您需要执行以下操作:

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

不能像在字符串中那样直接使用数组。生成的命令行将是:

java -jar WaveAppender.jar Array
如果你真正想要的是

java -jar WaveAppender.jar 1.wav 2.wav 3.wav
然后,您需要执行以下操作:

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

这里有几件事需要记住:

许多托管提供程序认为ExEC是一个危险的函数调用。因此,它可能在您的服务器上不可用。有关检查系统上是否启用exec的更多信息,请参阅

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

java-jar WaveAppender.jar数组

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

exec'java-jar WaveAppender.jar'。内爆“,$theFiles

有关内爆的更多信息,请参见

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


这里有几件事需要记住:

许多托管提供程序认为ExEC是一个危险的函数调用。因此,它可能在您的服务器上不可用。有关检查系统上是否启用exec的更多信息,请参阅

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

java-jar WaveAppender.jar数组

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

exec'java-jar WaveAppender.jar'。内爆“,$theFiles

有关内爆的更多信息,请参见

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


如果您想正确地将参数传递到Java的argv中,您需要使用空格而不是逗号进行内爆。我在该代码中遇到一个错误。解析错误:语法错误,第4行的C:\wamp\www\drum\index.php中出现意外的T_变量。第行是您在上面给我的exec代码。以下是完整的代码。$theFiles=Arraybass.wav,hihat.wav,output.wav;execjava-jarwaveappender.jar。内爆“,”$theFiles;使用内爆“,”和“$theFiles”。@Zach Rattner:更新的答案可以解决这个问题。如果您想正确地将参数传递到Java的argv中,您需要使用空格而不是逗号进行内爆。我在该代码中遇到一个错误。分析错误:语法错误,第4行的C:\wamp\www\drum\index.php中出现意外的T_变量。第4行是您在上面给我的exec代码。以下是完整的代码。$theFiles=Arraybass.wav,hihat.wav,output.wav;execjava-jarwaveappender.jar。内爆“,”$theFiles;使用内爆“,”,$theFiles.@Zach Rattner:更新了答案以解决此问题。这是在localhost上,因此exec没有问题。感谢帮助。尝试了前面提到的函数,结果报告为1。因此我猜exec已启用。这是在localhost上,因此exec没有问题。感谢帮助。尝试了前面提到的函数,结果报告为1。因此我猜exec已启用。