Commandes Linux Via Script PHP

Fermé
musix Messages postés 2 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 13:29
musix Messages postés 2 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 16:09
Bonjour,

Les internautes de mon site peuvent upload leur vidéo au format avi, wmv, mp4.
Je souhaite encoder leur vidéo automatiquement au format flv.
Pour cela, j'utilise ffmpeg : la commance linux ffmpeg mavideo.avi mavideo.flv permet l'encodage.
Comme je veux le faire de façon automatique, je lance cette commande depuis un script php, avec la fonction php exec($commande, $resultat).

Mon problème : seule la commande mkdir fonctionne avec cette fonction exec(). J'ai beau essayé d'autres commandes linux simples (rm, mv), aucune ne fonctionne.
De plus, je n'ai aucun moyen de voir si une erreur s'est produite au niveau de php ou au niveau de linux.

Je ne sais donc pas ce qui plante...

Pour info, le serveur est un serveur Apache, sur lequel mes fichiers sont en CHMOD 777.
A voir également:

1 réponse

*la fonction exec() est un peu plus riche que ce que tu écrit, jette un coup d'oeil à la page https://www.php.net/manual/fr/function.exec.php
Notament on peut capturer la valeur de retour de la commande en argument de exec(), ce qui te permettrai d'y vois plus clair.

*Pour mémoire, PHP possède une fonction mkdir() que je te conseille d'utiliser à la place d'un exec(mkdir). Ceci est valable pour d'autre commande.

PS : il existe un forum programmation qui est fait pour les question concernant la programmation.
0
musix Messages postés 2 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 16:09
1. J'ai déjà regardé le manuel de la fonction : string exec ( string $command [, array &$output [, int &$return_var ]] )
Mais en testant, elle ne rapporte aucune valeur.
Voici le code que j'ai, et qui ne revoie rien :

$commande = 'ls -l'; // Command Linux
exec($commande,$result); // Exécution de la commande Linux

foreach($return as $row) // Le result est un Array, donc je le parcours
echo $row;


2. PHP possède des fonctions pour la gestion de fichiers, certes, mais ça ne me suffira pas.
J'ai besoin de faire la commande ffmpeg mavideo.avi mavideo.flv qui n'est pas une commande qui gère le fichier, donc qui n'existera pas comme ça sous PHP. Je suis donc obligé d'utiliser les fonctions exec(), passthru() ou shell_exec().

Merci quand même pour ton intervention.
0