J'ai un script PHP qui exécute un script Python en lui envoyant des paramètres au format JSON. Ca fonctionne parfaitement.
En retour, le script Python répond avec un résultat au format JSON. Et là, il y a quelque chose de bizarre...
Voici la suite de tests réalisés.
Un extrait du script Python mon_script1.py
exécution en ligne de commande Python : OK (moi@mon_ordi: python mon_script1.py)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 data = {'toto' : 10, 'titi' : 11} print(json.dumps(data))
exécution en prompt PHP : OK (php > script_appel.php)
exécution en ligne de commande PHP : OK (moi@mon_ordi: php script_appel.php)
exécution via le navigateur : OK
Maintenant, je tente ceci
mon_script2.py
mon_script1.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 data = {'toto' : 10, 'titi' : 11} return data
exécution en ligne de commande Python : OK (moi@mon_ordi: python mon_script1.py)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 retour = mon_script2() print(json.dumps(retour))
exécution en prompt PHP : OK (php > script_appel.php)
exécution en ligne de commande PHP : OK (moi@mon_ordi: php script_appel.php)
exécution via le navigateur : NOK
J'ai ajouté des paramètres dans la ligne de commande du script PHP pour voir ce qui se passe
Je reteste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $data_envoi = escapeshellarg(json_encode($data_envoi)); $command = escapeshellcmd("/usr/bin/python /home/chemin/vers/script/mon_script1.py 2>&1"); $data_retour = exec("$command $data_envoi", $sortie, $error);
exécution en ligne de commande Python : OK (moi@mon_ordi: python mon_script1.py)
exécution en prompt PHP : OK (php > script_appel.php)
exécution en ligne de commande PHP : NOK (moi@mon_ordi: php script_appel.php)
exécution via le navigateur : NOK
J'obtiens l'erreur :
avec $error 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part Extra data: line 1 column 2 - line 1 column 5 (char 1 - 4)
Je suis perplexe...
Partager