"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi mon script Bash ne s'exécute-t-il pas lorsqu'il est appelé depuis PHP à l'aide de « shell_exec » ?

Pourquoi mon script Bash ne s'exécute-t-il pas lorsqu'il est appelé depuis PHP à l'aide de « shell_exec » ?

Publié le 2024-11-09
Parcourir:775

Why is my Bash script failing to execute when called from PHP using `shell_exec`?

Exécution de commandes Bash à partir de PHP : dépannage d'un échec d'exécution de script

Dans cette question, nous rencontrons un développeur PHP qui tente d'exécuter un script bash à partir de PHP à l'aide de shell_exec. La syntaxe utilisée est :

$output = shell_exec("./script.sh var1 var2");

Cependant, le script ne parvient pas à s'exécuter lorsque cette commande est appelée.

Pour déboguer ce problème, il est important d'identifier la cause de l'échec. Comme le script s'exécute correctement lors de son exécution via la ligne de commande à l'aide de ./script.sh var1 var2, le problème réside probablement dans le code PHP.

Un problème courant pouvant entraîner l'échec de l'exécution du script est celui des autorisations ou des chemins de répertoire incorrects. . Les scripts PHP nécessitent souvent que le répertoire de travail correct soit défini avant d'exécuter des commandes externes. Pour résoudre ce problème, le code peut spécifier le répertoire correct à l'aide de chdir avant d'appeler shell_exec.

L'extrait suivant résout ce problème :

$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);

Dans cet exemple, nous :

  1. Stockons le répertoire de travail actuel dans $old_path.
  2. Changeons le répertoire de travail en '/my /path/' en utilisant chdir.
  3. Exécutez le script bash en utilisant shell_exec.
  4. Revenez au répertoire de travail d'origine en utilisant chdir($old_path).

Par en s'assurant que le bon répertoire est en place, ce code modifié devrait exécuter avec succès le script bash de PHP.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3