A localização do shellscript é importante, e o caminho que você está usando é importante. Mesmo se alert.sh
estiver localizado em /var/www
, o diretório de trabalho atual poderá ser diferente. Use echo getcwd();
para obter o diretório de trabalho atual. Com um caminho absoluto, você usaria:
shell_exec('/var/www/alert.sh');
A segunda possibilidade (mais provável) é que o modo de arquivo (permissões de arquivo) seja insuficiente. O servidor web Apache é executado como usuário www-data
. Se o alert.sh
pertencer a você, tiver seu grupo e tiver permissões de execução somente para o proprietário, o servidor apache não poderá executá-lo. Possíveis permissões (praticando a regra de menor privilégio) são:
- 755 - proprietário: você - grupo: você
- 750 - proprietário: você - grupo: www-data
- 644 ou 640 - proprietário: você - grupo: você ou www-data
A última opção só funciona se você executar o script como shell_exec('/bin/sh alert.sh')
. O programa de shell /bin/sh
precisa apenas ler o script após o qual os dados são executados.