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 выводит ожидаемое значение.
Я в растерянности. Есть идеи, как это отладить?
4
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