Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2992 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Commande exec() qui ne passe pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commande exec() qui ne passe pas

n°2328450
sebastien4​444
Posté le 31-01-2019 à 14:18:26  profilanswer
 

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:

mood
Publicité
Posté le 31-01-2019 à 14:18:26  profilanswer
 

n°2328514
sebastien4​444
Posté le 01-02-2019 à 14:40:50  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Commande exec() qui ne passe pas

 

Sujets relatifs
Ligne de commande avec éléments à concaténer ?Obtenir une variable (commande for) help
Affichage "commande" PrestaShop impossibleAvec la commande echo >> choisir une ligne précise a editer
[Shell] Problème avec la commande wgetOuverture d'une page d'un multipage avec un mot de passe
Affichage message erreur mot de passeEquivalent commande grep sous dos
login/mot de passe dans script ftp dans dosmonter un lecteur réseau après commande kinit
Plus de sujets relatifs à : Commande exec() qui ne passe pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR