"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué mi script Bash no se ejecuta cuando lo llamo desde PHP usando `shell_exec`?

¿Por qué mi script Bash no se ejecuta cuando lo llamo desde PHP usando `shell_exec`?

Publicado el 2024-11-09
Navegar:521

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

Ejecución de comandos Bash desde PHP: solución de problemas de ejecución fallida de script

En esta pregunta, nos encontramos con un desarrollador de PHP que intenta ejecutar un script bash desde PHP usando shell_exec. La sintaxis utilizada es:

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

Sin embargo, el script no se ejecuta cuando se llama a este comando.

Para depurar este problema, es importante identificar la causa del error. Como el script se ejecuta correctamente cuando se ejecuta a través de la línea de comandos usando ./script.sh var1 var2, el problema probablemente radica en el código PHP.

Un problema común que puede causar fallas en la ejecución del script son los permisos o rutas de directorio incorrectos . Los scripts PHP a menudo requieren que se configure el directorio de trabajo correcto antes de ejecutar comandos externos. Para resolver esto, el código puede especificar el directorio correcto usando chdir antes de llamar a shell_exec.

El siguiente fragmento soluciona este problema:

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

En este ejemplo, nosotros:

  1. Almacenamos el directorio de trabajo actual en $old_path.
  2. Cambiamos el directorio de trabajo a '/my /ruta/' usando chdir.
  3. Ejecute el script bash usando shell_exec.
  4. Vuelva al directorio de trabajo original usando chdir($old_path).

Al asegurarse de que esté en su lugar el directorio correcto, este código modificado debería ejecutar con éxito el script bash desde PHP.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3