Page 1 sur 1
exec() et script python ?
Posté : 18 juil. 2007, 12:09
par kunzy
Bonjour !
Je rencontre un léger problème dans un script php :
le but est de pouvoir sous certaines conditions (après requètes sql, if(machin > ...) ) lancer un script python.
Donc bien naïvement nous avons tenté des choses du genre exec("python script.py > /dev/null").
Le problème est que le script est bien lancé, mais on en sort dès qu'on rencontre certaines fonctions python, du genre communication avec le port série ou time.sleep().
Pour info, ca tourne sur un serveur apache 2 et l'utilisateur www-data a bien les droits pour accéder au port série.
Posté : 18 juil. 2007, 14:40
par Sékiltoyai
Essaye
echo exec("python script.py 2->&1");
pour afficher les erreurs.
Posté : 18 juil. 2007, 15:02
par Invité
Alors j'ai pas de messages d'erreur (page blanche...) mais toujours pas de résultat. Le problème reste le même : dans le shell, la commande fonctionne, mais passée dans le exec(), pas d'erreur, mais pas de résultat : le script est quitté avant la fin, surement quand il rencontre certaines fonctions.
Par exemple, on arrive à écrire ou lire dans un fichier, mais ouvrir un port série ou simplement faire un time.sleep(5), ca ne va pas plus loin.
Posté : 18 juil. 2007, 15:33
par Sékiltoyai
Merde, je me suis gourré dans la syntaxe de la commande, remplace par :
echo exec("python script.py 2>&1");
Sinon, affiche les erreurs php, si ce n'est pas déjà fait dans ton php.ini, mets error_reporting à E_ALL et display_errors à On.
J'espère qu'avec ca on va pouvoir trouver le Saint Graal, en (Monty) python... ==>[]
Posté : 18 juil. 2007, 15:45
par Invité
Ah oui comme un con j'avais fait un copié / collé.
Voilà un grand progrès : on a une erreur
serial.serialutil.SerialException: Could not open port: [Errno 13] Permission denied: '/dev/ttyS0'
là le soucis c'est que : on lance le script à distance via un navigateur, donc c'est bien l'utilisateur www-data qui le lance non ? Donc il doit juste faire partie du groupe 'dialout' ?
Control:/opt# adduser www-data dialout
L'utilisateur « www-data » est déjà membre du groupe « dialout ».
Et ça marche pourtant pas ...
Posté : 18 juil. 2007, 15:47
par kunzy
Ah oui comme un con j'avais fait un copié / collé.
Voilà un grand progrès : on a une erreur
serial.serialutil.SerialException: Could not open port: [Errno 13] Permission denied: '/dev/ttyS0'
là le soucis c'est que : on lance le script à distance via un navigateur, donc c'est bien l'utilisateur www-data qui le lance non ? Donc il doit juste faire partie du groupe 'dialout' ?
Control:/opt# adduser www-data dialout
L'utilisateur « www-data » est déjà membre du groupe « dialout ».
Et ça marche pourtant pas ...
Posté : 18 juil. 2007, 16:34
par Sékiltoyai
là le soucis c'est que : on lance le script à distance via un navigateur, donc c'est bien l'utilisateur www-data qui le lance non ?
Oui
Donc il doit juste faire partie du groupe 'dialout' ?
Surement.
C'est quoi les droits (chown, chgrp, et chmod) du fichier ?
Posté : 18 juil. 2007, 16:52
par kunzy
Alors pour être sur de nous, on a mis que le fichier appartenait à www-data et au groupe dialout. On a aussi mis les droit à 7777.
Posté : 18 juil. 2007, 16:52
par Sékiltoyai
Vous avez blindé

Posté : 18 juil. 2007, 17:06
par Sékiltoyai
Essaye avec d'autres fonctions comme shell_exec() si ca ne marche pas...
Posté : 18 juil. 2007, 17:08
par kunzy
C'est déjà fait ...

Re: exec() et script python ?
Posté : 13 juil. 2016, 21:52
par Matthis974jump
Voila ton problème

:
Pour le test fait un
et essaie de faire une commande de type sudo et tu vera se qui se passe quand tu execute ta commende !!!!!
Tu vas te rendre compte ( je pense ) de ton erreur !!!!!!!!!!!!

Re: exec() et script python ?
Posté : 13 juil. 2016, 22:33
par @rthur
(C'était une question posée il y a 9 ans ! J'espère qu'il est passé à autre chose depuis

)