Precisa invocar o .sh quando o carregamento da página web do php

1

Estou tentando executar um script .sh ao carregar minha página principal:

index.php:

<?php 
shell_exec('./alert.sh');    
?>

<script type='text/javascript'>
window.location = "phpshell.php";
</script>

Meu script alert.sh:

#! /bin/sh

echo Login: >> log.txt
date >> log.txt
mpg123 alert.mp3

Ele está funcionando quando iniciado manualmente a partir do nautilus, mas nada acontece ao se conectar ao servidor web. Estou usando o Ubuntu 11.10 e o Apache2.

A pasta padrão para o servidor da Web é / var / www

    
por 01BTC10 22.01.2012 / 21:35

1 resposta

1

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.

    
por Lekensteyn 22.01.2012 / 21:49