2017-05-10 2 views
0

J'ai des problèmes pour lancer la fonction "exec" sur mon site PHP. Je suis capable de l'exécuter plusieurs fois avec un exécutable qui prend juste un argument variable et renvoie un message de test. Cependant, lorsque j'utilise un exécutable qui effectue un traitement d'image, où je souhaite transmettre une image du site Web qu'un utilisateur télécharge en tant qu'argument, il ne semble pas du tout exécuter l'exécutable. J'ai même quelques commandes de cout dans l'exécutable pour assurer son fonctionnement, mais ceux-ci ne sont pas affichés sur le site Web. Donc, je pense que pour une raison quelconque, le php ne peut pas exécuter l'exécutable? Je suis capable de l'exécuter amende de mon bureau ...Le site web PHP n'exécute pas la fonction exec lors du passage de l'image en argument

Voici un exemple du code qui ne fonctionne pas sur mon site PHP:

$imgtest1="/uploaded_files/me.jpg"; 
$imgtest2="/uploaded_files/clusteroutput.jpg"; 
$nosuppix = 400; 
$noweight = 100; 
$executabletest = exec("ImgProc $imgtest1 $nosuppix $noweight $imgtest2"); 
echo $executabletest; 

est-il un moyen de débogage ou obtenir une erreur sortie de la fonction exec? Y at-il quelque chose qui me manque lors du passage d'une image à l'exécutable? L'exécutable utilise plusieurs fichiers DLL qui se trouvent dans le même dossier que l'exécutable. Doivent-ils être emballés ensemble pour une raison quelconque? Je m'excuse, mais je ne sais vraiment pas ce qui reste à tester ...

*** Edit: Je suis maintenant en mesure de l'exécuter si j'écris tout le code dans le escapeshellcmd lui-même ... comment se fait-il que je ne sois pas capable de simplement passer les variables?

$cmdinput = escapeshellcmd('SuperpixelsFinal "D:/WebPages/TALIA ART/TALIA ART/uploaded_files/me.jpg" 400 100 "D:/WebPages/TALIA ART/TALIA ART/uploaded_files/clusteroutput.jpg"'); 
+0

vous avez manqué les guillemets. '$ executabletest = exec (" ImgProc \ "$ imgtest1 \" $ nosuppix $ noweight \ "$ imgtest2 \" ")' – nogad

Répondre

0

Pour toute autre personne ayant ce problème, il est parce que j'utilisais escapeshellcmd quand j'aurais utilisé escapeshellarg pour chaque chaîne individuelle puis exécutez l'exec avec des guillemets doubles en utilisant uniquement des variables comme si: $ executabletest = exec ("SuperpixelsFinal $ imgtest1 $ nosuppix $ noweight $ imgtest2");