shell exec в PHP возвращает пустую строку


shell_exec и exec не возвращают никакого контента. Я не могу понять, в чем дело.

Вот некоторый код:

echo 'test: ';
$output = shell_exec('whoami');
var_export($output, TRUE);
echo PHP_EOL . '<br>' . PHP_EOL;

И вот источник вывода

test 2: 
<br>

У меня нет контроля над хостом, но я считаю, что они используют suPHP. Согласно phpinfo, безопасный режим отключен. Запуск whoami из SSH выводит ожидаемое значение.

Я в растерянности. Есть идеи, как это отладить?

Author: sharoz, 2012-07-11

2 answers

Вы никогда не печатаете переменную $output. Вызов var_export() возвращает содержимое переменной, когда вы вызываете ее со вторым параметром true, он не выводит ее напрямую.

 5
Author: lanzz, 2012-07-10 21:43:50

Если вы хотите, чтобы вывод команды оболочки был прочитан обратно в PHP, вам, вероятно, понадобится popen(). Например:

if( ($fp = popen("some shell command", "r")) ) {
    while( !feof($fp) ) {
        echo fread($fp, 1024);
        flush(); // input will be buffered
    }
    fclose($fp);
}
 0
Author: paulsm4, 2012-07-10 21:43:46