L'exécution de java .jar fichier avec php
J'ai fait .fichier jar qui joint deux fichiers wave ensemble.Je l'appelle avec l'invite de commande comme si.
java-jar WaveAppender.jar 1.wav 2.wav sur.wav
Je suis en train d'utiliser php maintenant pour exécuter cette .fichier jar,mais le code ci-dessous ne semble pas fonctionner
$theFiles = Array("1.wav","2.wav","output.wav");
exec("java -jar WaveAppender.jar $theFiles");
Je ne reçois pas toutes les erreurs, mais de la sortir.wav n'est pas écrit.
Suis-je appeler exec() mal?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser des tableaux directement, comme dans une chaîne de caractères. La résultante en ligne de commande qui serait généré serait:
Si ce que vous voulez vraiment est
alors vous avez besoin pour ce faire:
argv
, vous aurez envie de faire imploser avec un espace, pas une virgule.implode(',', $theFiles)
.Il y a plusieurs choses à garder à l'esprit ici:
De nombreux fournisseurs d'hébergement envisager
exec
être un dangereux appel de fonction. Pour cette raison, il peut ne pas être disponible sur votre serveur. Pour plus d'informations sur la vérification de savoir siexec
est activé sur votre système, voir cette discussion.Vos fichiers sont stockés dans un tableau. Étant donné que le code que vous avez posté, vous êtes réellement en passant cette chaîne de
exec
:java -jar WaveAppender.jar Array
Pour résoudre ce problème, essayez d'utiliser
implode
pour concaténer tous les éléments du tableau en une chaîne de caractères, comme suit:exec('java -jar WaveAppender.jar ' . implode(' ', $theFiles));
Pour plus d'informations sur
implode
, voir le PHP docs.Rappelez-vous que
exec
renvoie une valeur, et vous pouvez également passer un tableau à remplir avec toutes les données de sortie du programme. Ce serait utile pour la gestion des erreurs dans votre application web. Pour plus d'informations surexec
, voir le PHP docs.