Commande exec() qui ne passe pas

Commande exec() qui ne passe pas - PHP - Programmation

Marsh Posté le 31-01-2019 à 14:18:26    

Bonjour,
 
Je souhaite créer un programme en php qui, à la soumission d'un formulaire qui permet de choisir une liste d'images, va créer une vidéo type diaporama de ces images (vidéo ensuite téléchargeable par l'utilisateur).
 
Pour ce qui est de la partie encodage vidéo, j'utilise le soft FFMPEG (je n'ai rien trouvé d'autre à vrai dire).
Pour simplifier ma question, je vais mettre de côté la partie traitement du formulaire ; supposons donc que ma (longue) commande qui permet d'encoder la vidéo se trouve dans un fichier batch sur C:\inetpub\wwwroot\monsite\macommande.bat.
Dans mon fichier php, je fais donc un :

Code :
  1. <?php
  2. $cmd = exec("C:\\inetpub\\wwwroot\\monsite\\macommande.bat" );
  3. echo $cmd;
  4. ?>


Cela crée bien la vidéo mais le premier problème que j'ai rencontré est que dans mon navigateur, je me retrouve avec un chargement super long qui termine par une erreur 500 PHP ("La ressource que vous recherchez présente un problème, elle ne peut être affichée" ).
Pour palier à ça, j'ai trouvé la solution dans ce post, qui consiste à utiliser le programme PsExec pour lancer mon batch dans un nouveau processus et donc avoir un retour de commande rapide dans mon navigateur (en gros, faire tourner le batch en arrière-plan).
Je fais donc :

Code :
  1. <?php
  2. $cmd = exec("C:\\inetpub\\wwwroot\\monsite\\psexec.exe \\\\127.0.0.1 -d C:\\inetpub\\wwwroot\\monsite\\macommande.bat" );
  3. echo $cmd;
  4. ?>


Mais ça ne fontionne pas, alors que :
- "C:\inetpub\wwwroot\monsite\psexec.exe \\127.0.0.1 -d C:\inetpub\wwwroot\monsite\macommande.bat" fonctionne si je la lance manuellement via cmd
- Ce n'est pas un problème de caractères dans mon String car si je fais ça :

Code :
  1. <?php
  2. $s = "C:\\inetpub\\wwwroot\\monsite\\psexec.exe \\\\127.0.0.1 -d C:\\inetpub\\wwwroot\\monsite\\macommande.bat";
  3. $cmd = exec($s);
  4. echo $s;
  5. ?>


J'obtiens bien la bonne commande à executer en retour (celle que j'execute manuellement avec le bon nombre de back-slash).
 
Quelqu'un aurait-il une idée ? Parceque là je patauge un peu  :pt1cable:

Reply

Marsh Posté le 31-01-2019 à 14:18:26   

Reply

Marsh Posté le 01-02-2019 à 14:40:50    

Bon, finalement j'ai résolu mon problème en améliorant ma commande FFMPEG (chargement 4 à 5 fois moins long) et en augmentant les timeout d'exécution de PHP et d'IIS.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed