![Antonio Carlos Tafari Filho Antonio Carlos Tafari Filho](//static.vivaolinux.com.br/imagens/fotos/desconhecido.png)
Tafari
(usa Fedora)
Enviado em 15/04/2012 - 17:00h
Olá.
Vou responder pelo pouco que sei.
Primeiro, você precisa dar acesso ao usuário responsável por rodar comandos shell do Apache.
No meu caso, o usuário era o apache.
Como root, digite: visudo
Acrescente a linha abaixo, modificando o caminho dos executaveis de acordo com o necessário (com vírgula entre os comandos).
apache ALL=NOPASSWD:/usr/sbin/xxxxxx,/usr/bin/yyyyyy
Reinicie o Apache
Você também precisa verificar se o SElinux (caso existente) esteja bloqueando este tipo de operacão. Se estiver, você precisa liberar o acesso.
Ainda, para verificar se o comando passado por shell está correto, eu li sobre uma gambiarra: colocar 2>&1 ao final da linha.
Salvo engano, por padrão, o shell_exec, caso não seja executado, a variável retorna nula. Com o 2>&1 ele retorna o erro do shell.
<?php
$teste = shell_exec("sudo sarg -u dudu 2>&1");
echo $teste;
?>
Observacão: Desconheco potenciais falhas de seguranca em adotar este procedimento.
Espero ter ajudado.
Abracos.