Problemas ao reiniciar o apache via PHP (mesmo com o sudo)

2

Como parte do processo de inscrição em nosso site, diretivas do VirtualHost são criadas e adicionadas a um arquivo de configuração via PHP, depois que cada VirtualHost é criado, o apache é reiniciado normalmente para que o novo site comece a funcionar. O usuário PHP que roda sob (www) recebeu permissão para reiniciar o apache em / etc / sudoer e, em seguida, um script php chamado exec ('/ usr / local / bin / sudo / usr / local / sbin / apachectl gracioso'); / p>

Isso funciona perfeitamente. No entanto, estamos no processo de mudar para um novo servidor e não consigo fazer isso funcionar na nova configuração

Adicionei a seguinte linha ao / etc / sudoers

apache ALL= NOPASSWD: /usr/sbin/apachectl graceful

e, em seguida, nosso script PHP chama:

exec('/usr/bin/sudo /usr/sbin/apachectl graceful');

Se eu habilitar o acesso ao shell para o usuário e login do apache, posso executar 'sudo / usr / sbin / apachectl graceful' perfeitamente, e é justamente quando o chamamos do PHP que ele não funciona.

Alguém tem alguma ideia? Obrigado.

No nosso servidor antigo do FreeBSD nós estávamos rodando o Apache 1.3.xe o PHP 4.4

Nosso novo servidor é o CentOS 5.4 com Apache 2.2.xe PHP 5.3.2

    
por James 14.07.2010 / 15:48

2 respostas

4

No arquivo sudoers (use visudo), abaixo da linha de padrões existentes, adicione:

defaults:www !requiretty

Na verdade, você tem certeza de que está sendo executado como o usuário "www"? O padrão para o CentOS é "apache". Um pequeno script para tentar:

<?php print system("whoami");?>

Se não for "www", basta substituir o bit "www" nos sudoers acima.

    
por 14.07.2010 / 16:17
0

Você pode tentar com o shell_exec?

    
por 14.07.2010 / 15:55