Maison  >  Article  >  développement back-end  >  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 » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 03:17:30412parcourir

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 :

<code class="php">$output = shell_exec("./script.sh var1 var2");</code>

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 :

<code class="php">$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);</code>

Dans cet exemple, nous :

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

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn