"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que meu script Bash não é executado quando chamado do PHP usando `shell_exec`?

Por que meu script Bash não é executado quando chamado do PHP usando `shell_exec`?

Publicado em 2024-11-09
Navegar:781

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

Executando comandos Bash do PHP: solução de problemas de falha na execução de script

Nesta questão, encontramos um desenvolvedor PHP tentando executar um script bash do PHP usando shell_exec. A sintaxe usada é:

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

No entanto, o script falha ao executar quando este comando é chamado.

Para depurar esse problema, é importante identificar a causa da falha. Como o script é executado com êxito ao ser executado por meio da linha de comando usando ./script.sh var1 var2, o problema provavelmente está no código PHP.

Um problema comum que pode causar falha na execução do script são permissões ou caminhos de diretório incorretos . Os scripts PHP geralmente exigem que o diretório de trabalho correto seja definido antes de executar comandos externos. Para resolver isso, o código pode especificar o diretório correto usando chdir antes de chamar shell_exec.

O trecho a seguir aborda esse problema:

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

Neste exemplo, nós:

  1. Armazena o diretório de trabalho atual em $old_path.
  2. Altere o diretório de trabalho para '/my /path/' usando chdir.
  3. Execute o script bash usando shell_exec.
  4. Volte para o diretório de trabalho original usando chdir($old_path).

Por garantindo que o diretório correto esteja no lugar, este código modificado deve executar com sucesso o script bash do PHP.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3