Pega a saída de “nginx -t” com php [closed]

1

Estou tentando fazer um painel de controle simples para o meu servidor executando nginx com php-fpm.

Eu consegui pegar o resultado de service php5-fpm restart e service nginx reload , mas a saída de nginx -t aparentemente não funciona da mesma maneira?

Eu tentei com $out = shell_exec('nginx -t'); , como eu uso para os outros dois exemplos acima. Mas quando eu executo o script, ele apenas imprime o resultado e a variável $out é nula.

Eu também tentei com shell() usando o argumento de saída e popen() combinados com fread() , mas esse é o mesmo resultado.

O que eu quero alcançar é atualizar um campo no meu banco de dados mysql com o resultado de nginx -t .

Existe alguma maneira de fazer isso?

    
por majbom 11.02.2014 / 20:18

1 resposta

2

Isto é mais uma programação do que a questão do ubuntu, por isso provavelmente deve estar no estouro de pilha.

No entanto, seu problema provavelmente é que os erros não sejam capturados porque você está solicitando STDOUT e os erros estão sendo enviados para STDERR.

Existem duas soluções possíveis.

O primeiro é usar uma função php para capturar STDERR. Eu não sei o suficiente php para responder isso.

O segundo é direcionar o STDERR para o STDOUT. Executar

nginx -t 2>&1

Isto diz ao shell para mover tudo escrito para STDERR para STDOUT.

Para mais informações sobre fluxos de arquivos e stderr em particular: link

    
por thagorn 11.02.2014 / 21:21