J'ai essayé d'utiliser exec()
avec 'whoami'
Pour vérifier si cela fonctionne et j'ai obtenu le résultat de
nt authority\system
Maintenant, je dois exécuter un fichier .exe
Avec les paramètres de php
via exec()
function.
J'ai essayé ceci dans invite de commande et il exécute réellement le programme avec des paramètres donnés. Ceci est la commande exemple.
NOTE le fichier exe obtient 3 entrées (dossier, nom_fichier, rapport_fichier_nmae)
> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
Mais quand j'exécute cette commande à partir du fichier php
:
exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');
il ne se passe rien. C'est la première fois que j'utilise la fonction exec (), je ne connais donc pas ses détails. Qu'est-ce qui ne va pas?
J'ai essayé d'utiliser:
\\
Au lieu de \
escapeshellarg()
dans le répertoire""
autour des noms de dossierPas de chance
Addendum:
echo exec($command) // echos < .... why?
ou
exec($command, $output);
print_r($output); // Array()
J'ai même changé l'autorisation sur le fichier pour un contrôle total sur tous les utilisateurs. Si j'appelle le programme à partir de command Prompt
, Je peux voir l'icône apparaître à côté de l'horloge pendant une seconde.
Mais le même appel de php
n'appellera même pas le programme.
Éditer
Même exec('notepad.exe');
ne fonctionne pas. Quelque chose doit être fait avec php
configurations peut-être?
J'ai déjà dit que j'étais nouveau à la fonction exec()
. Après avoir creusé un peu plus, je suis tombé sur 2>&1
Qui doit être ajouté à la fin de la commande dans exec()
.
Merci @mattosmat
Pour le signaler également dans les commentaires. Je ne l'ai pas essayé tout de suite car vous avez dit qu'il s'agissait d'une commande Linux, je suis sous Windows.
Donc, ce que j'ai découvert, la commande est en train de s'exécuter dans le back-end. C'est pourquoi je ne pouvais pas le voir fonctionner, ce que je m'attendais à voir.
Pour tous ceux qui ont eu un problème similaire, mon conseil est d'utiliser cette commande. Il va signaler toutes les erreurs et aussi vous donner des infos/détails sur l'exécution.
exec('some_command 2>&1', $output);
print_r($output); // to see the response to your command
Merci pour l'aide les gars, je l'apprécie;)
Vous pouvez également essayer de donner le chemin complet au binaire que vous essayez de lancer. Cela a résolu mon problème lorsque j'essayais d'utiliser ImageMagick
.