PHP <==> Json <==> Python
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
Code:
1 2
| data = {'toto' : 10, 'titi' : 11}
print(json.dumps(data)) |
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 : OK (moi@mon_ordi: php script_appel.php)
exécution via le navigateur : OK
Maintenant, je tente ceci
mon_script2.py
Code:
1 2
| data = {'toto' : 10, 'titi' : 11}
return data |
mon_script1.py
Code:
1 2
| retour = mon_script2()
print(json.dumps(retour)) |
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 : OK (moi@mon_ordi: php script_appel.php)
exécution via le navigateur : NOK :question:
J'ai ajouté des paramètres dans la ligne de commande du script PHP pour voir ce qui se passe
Code:
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); |
Je reteste
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 :question: (moi@mon_ordi: php script_appel.php)
exécution via le navigateur : NOK :question:
J'obtiens l'erreur :
Code:
Extra data: line 1 column 2 - line 1 column 5 (char 1 - 4)
avec $error 1
Je suis perplexe...