Bem, para começar, o PHP não está fazendo shell_exec
a bash
no seu caso, está fazendo isso através de sh
. Isso é bastante óbvio a partir da mensagem de erro exata. Estou adivinhando que isso é controlado pelo shell especificado em / etc / passwd para o usuário que o servidor da Web está executando e o shell_exec não captura stderr, em combinação com isso quando você executa PHP da linha de comando simplesmente cai para $ {SHELL}. Quando lançado como sh, o bash desativa vários recursos para melhor imitar o comportamento do shell sh original. O fornecimento de .bashrc
e .bash_profile
quase certamente está entre esses, se não por outro motivo, porque esses arquivos provavelmente usarão sintaxe ou extensões específicas do bash.
Eu não tenho muita certeza sobre o caso SSH, mas a julgar pelo prompt $
simples, você pode muito bem estar trabalhando lá, o que também explica o comportamento que você está vendo. Experimente echo ${SHELL}
para ver o que você realmente caiu. que deve funcionar em todas as conchas.
Dito isto , parece-me uma péssima ideia depender dos alias bash de um script PHP. Se o que você quer fazer é muito longo para se encaixar muito bem na declaração shell_exec
(que deve ser usada apenas com muito cuidado), fazer uma função PHP para criar a linha de comando a partir dos parâmetros e chamando isso é quase certamente muito melhor abordagem, e funcionará essencialmente independentemente do qual o shell está instalado, selecionado ou como está configurado. Como alternativa, considere chamar um arquivo de script externo, que pode ser gravado no bash e especificar / bin / bash como seu interpretador. Mas, então, seu aplicativo exigirá que o bash seja instalado (o que provavelmente já acontece se depender de aliases do bash ...).