Exécuter python dans un script php à l'aide de shell_exec()
Je suis confronté à un problème bizarre en essayant d'exécuter python dans un serveur php (LAMP). (safe_mode off)
si je type:
$output = shell_exec("ls -lah");
echo "<pre>$Output</pre>";
J'ai obtenu le résultat de la ls
de commande. De même pour$output = shell_exec("tar --version");
et d'autres applications, telles que gzip.
Cependant, si je passe pour l'une de ces lignes:
$output = shell_exec("python --version");
$output = shell_exec("python2.7 --version");
$output = shell_exec("/usr/bin/python --version");
$output = shell_exec("python my_script.py");
Et d'autres variantes de ce genre, je n'obtiens aucun résultat. La commande n'est pas exécutée, le python bitecode pas fait et le echo
reste silencieux.
J'ai aussi essayé avec la exec()
commande sans plus de succès.
double possible de PHP et shell_exec
Peut-être un problème de droit ?
J'ai lu ce post en détail comme beaucoup d'autres, je ne trouve pas de réponse
Avez-vous résolu ce problème?
stackoverflow.com/questions/18689684/... Cela pourrait être une réponse à cette question.
Peut-être un problème de droit ?
J'ai lu ce post en détail comme beaucoup d'autres, je ne trouve pas de réponse
Avez-vous résolu ce problème?
stackoverflow.com/questions/18689684/... Cela pourrait être une réponse à cette question.
OriginalL'auteur Cyrille | 2013-09-10
Vous devez vous connecter pour publier un commentaire.
Je pense que cela peut aider...
ressemble à la sortie pour le python appel doit être acheminé correctement.
J'ai été capable de faire ce travail au sein de mon index.php fichier pour le retour de la version de python...
Ici est là que j'ai trouvé la réponse.
J'ai également eu la même erreur avec
pdftk
. Mais il explique pourquoi. "/opt/lampp/lib/libstdc++..6: la version " GLIBCXX_3.4.9' not found (requis par pdftk)". Cela peut être le cas avec python? Permettez-moi d'expérimenter un peu..A fonctionné pour moi aussi, mais pour moi, l'exécution de l'hébergement mutualisé géré avec CPanel. Mon py, scripts sont en dessous de l' /public_html racine, et à l'aide de $out = shell_exec('python ../pyscr/script.py '.param1.' 2>,&1'); met l'impression des valeurs de script.py en $.
OriginalL'auteur JDCartee
Je pense que le noyau ne peut pas trouver le chemin pour python où il est installé..si vous pouvez faire echo $PATH..il montrera tous les chemins où la recherche d'une commande si
ajouter votre python et puis ça peut fonctionner ou vous pouvez donner le chemin absolu(autres que /usr/bin/) voir si cela fonctionne..j'ai besoin de le tester aussi.
Salut! Merci pour votre réponse rapide! J'ai essayé echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/share/java/apache-ant/bin:/usr/bin/vendor_perl:/usr/bin/core_perl L'interpréteur python est situé dans le répertoire /usr/bin/, donc ça devrait le trouver, non?
J'ai essayé de chemin d'accès absolu, sans succès...
OriginalL'auteur theartist33
Ce n'
vous dire, à la fois à partir de la ligne de commande et de shell_exec()? Il devrait vous dire qui (le cas échéant) de l'interpréteur Python c'est de trouver (à partir de
$PATH
). N'oubliez pas que c'est tout à fait possible que le$PATH
utilisé à partir de la ligne de commande de Linux peut ne pas être le même que le$PATH
utilisé par shell_exec()! Une fois que vous trouver l'interpréteur de Python que vous souhaitez utiliser, vous pourrait avoir à coder en dur dans le shell_exec().which python
donne pétantes la même réponse de la ligne de commande et php:/usr/bin/python
. Le problème ne peut pas venir de cette...BTW,
shell_exec('echo $PATH');
donne la même réponse dans la console et dans le terminal:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
OriginalL'auteur Phil Perry
Si vous essayez d'exécuter le script python à l'aide du code suivant
vous aurez besoin d'utiliser un chemin absolu pour my_script.py et de donner toutes les autorisations (je ne suis pas sûr que ceux qui sont suffisantes) pour le fichier python.
OriginalL'auteur Chaithanya
Plus probable est le serveur web qui n'ont pas des droits appropriés pour exécuter des commandes shell. Pour résoudre ce problème, exécutez le "sudo visudo" commande " et ajouter la ligne suivante dans le fichier sudoers:
www-data ALL=NOPASSWD: ALL
Aussi, assurez-vous que le répertoire /var/www appartient à la www-data de l'utilisateur et de groupe (utiliser sudo chown -R www-data:www-data /var/www pour définir le bon propriétaire). Les détails sont ici http://www.raspberry-pi-geek.com/Archive/2014/07/PHP-on-Raspberry-Pi
Également consulter
Ne peut pas exécuter un script python à partir de php
OriginalL'auteur Suresh Jaiswal
Je pense que vous devez consulter pour le chemin d'accès complet pour votre python.
par exemple utiliser ce lieu:
au lieu de:
OriginalL'auteur Kamoly