Comportamento inesperado com passthru no php

2

Eu configurei o nginx e o php em um servidor Ubuntu 12.04. Eu tenho o seguinte arquivo php:

<?php
echo "Hello ";
echo passthru("cat /proc/meminfo");
echo "world. I am ";
echo passthru("whoami");   
?>

Isso funciona completamente bem quando executado a partir da linha de comando, e o php retorna o texto de / proc / meminfo. Quando executado via nginx, no entanto, vejo isto:

Hello world. I am www-data 

Claramente, o passthru está funcionando. No entanto, parece que não consigo ler nada em / proc. As permissões em / proc são dr-xr-xr-x e confirmei que o usuário www-data que nginx e php executam pode acessar esse diretório. Eu liguei o log de php, e não há mensagens de erro relacionadas a isso.

Sugestões?

Editar: o modo de segurança está desativado.

    
por River 31.07.2012 / 11:39

1 resposta

2

Então, corrigimos isso off-line. Estou colocando isso aqui para a próxima pessoa com esse problema:

Verificamos que o uso do caminho completo para o gato resolveu o problema. Não houve erro visível porque o passthru não captura stderr (e o erro foi a falha em localizar o gato). O River então descobriu que o $ PATH estava sendo definido para a coisa errada e o corrigiu.

    
por 01.08.2012 / 10:55