Die Ausführung einer java .jar-Datei mit php
Habe ich gemacht .jar-Datei, die verbindet zwei wave-Dateien zusammen.Rufe ich es mit der Eingabeaufforderung wie so.
java-jar WaveAppender.jar 1.wav-2.wav aus.wav
Ich versuche, mit php nun, dies auszuführen .jar-Datei,aber der code unten funktioniert anscheinend nicht
$theFiles = Array("1.wav","2.wav","output.wav");
exec("java -jar WaveAppender.jar $theFiles");
Ich bekomme keine Fehler aber aus.wav ist nicht geschrieben.
Bin ich den Aufruf exec() falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden, die arrays direkt wie diese in einem string. Der daraus resultierende Befehl, der würde erzeugt werden würde:
Wenn das, was Sie eigentlich wollen, ist
dann brauchen Sie, um dies zu tun:
argv
sind, werden Sie wollen, um zu implodieren, die mit einem Leerzeichen, nicht Komma.implode(',', $theFiles)
.Gibt es einige Dinge zu beachten hier:
Viele hosting-Anbieter betrachten
exec
ein gefährlicher Aufruf der Funktion. Aus diesem Grund kann es nicht auf dem server vorhanden ist. Weitere Informationen zum überprüfen, obexec
auf Ihrem system aktiviert ist, sehen diese Diskussion.Ihre Dateien gespeichert sind in ein array. Erhalten den code, den Sie geschrieben, Sie sind tatsächlich an diese Zeichenfolge
exec
:java -jar WaveAppender.jar Array
Um dies zu beheben, versuchen Sie es mit
implode
zu verketten alle Elemente des Arrays in einen string, etwa so:exec('java -jar WaveAppender.jar ' . implode(' ', $theFiles));
Weitere Informationen auf
implode
finden Sie die PHP-docs.Denken Sie daran, dass
exec
gibt einen Wert zurück, und Sie können auch ein array übergeben werden, gefüllt mit all den Ausgang des Programms. Dies wäre nützlich für den Umgang mit Fehlern in der web-app. Für weitere Informationen überexec
finden Sie die PHP-docs.