Exécuter un script Python de manière transparente à partir de PHP
Pour exécuter un script Python à l'aide de PHP, plusieurs méthodes sont disponibles, notamment exec, shell_exec et system . Cependant, lors de l'utilisation de exec('/usr/bin/python2.7 /srv/http/assets/py/switch.py arg1 arg2') en PHP, aucune sortie ne peut être générée malgré la définition du rapport d'erreurs sur E_ALL et l'activation de display_errors.
Pour résoudre ce problème, il est crucial de vérifier que l'utilisateur du serveur Web dispose des autorisations nécessaires pour accéder et exécuter le script Python et ses commandes associées. Plus précisément, le fichier Python doit disposer des autorisations d'exécution et toutes les commandes internes doivent également être configurées avec les autorisations appropriées.
Résoudre le problème avec shell_exec
Ubuntu Server 10.04 le prouve être un environnement approprié pour cette solution. En utilisant la fonction shell_exec de PHP, la commande peut être exécutée et la sortie renvoyée sous forme de chaîne. L'extrait de code PHP suivant illustre cette approche :
$command = escapeshellcmd('/usr/custom/test.py'); $output = shell_exec($command); echo $output;
Importance de la ligne Shebang dans le script Python
Le script Python (test.py) doit commencer par le ligne suivante pour garantir que le bon interpréteur est invoqué :
#!/usr/bin/env python
Cette ligne demande au système d'utiliser l'interpréteur Python spécifié dans la variable d'environnement $PATH, garantissant la compatibilité avec les différentes versions de Python installées.
Pour rendre le script test.py exécutable sur les plates-formes Unix, exécutez la commande suivante :
chmod +x myscript.py
Droits d'exécution pour les fichiers et les commandes
En plus de définir des autorisations d'exécution pour le script Python, il est tout aussi important d'accorder au Web droits d'exécution de l'utilisateur (généralement www-data/apache) sur le fichier et ses commandes internes. Dans le cas contraire, le script pourrait ne pas s'exécuter correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!