Запуск из PHP не дает вывода
Я боролся сexec()
, пытаясь захватить вывод из него, когда я добавляю задачу, используяat
Unix системная команда. Моя проблема в том, что при запуске из моего скрипта он не выдает никаких данных, однако запускает его из терминалаand PHP в интерактивном режиме выводит пару строк.
Команда, которую я хочу выполнить:
echo exec("echo 'php -f /path/to/file.php foo=1' | at now + 1 minutes", $result);
var_dump()
даетstring(0) ""
, а такжеprint_r()
выплевываетArray ()
, Я пытался использоватьshell_exec()
какие выводыNULL
Однако следующие выводыhi
при запуске в контексте веб-страницы:
echo exec("echo 'hi'");
Это также выводит вещи:
echo exec("atq");
Однако, как только я используюat
ничего не выводится. Как я могу получить вывод:
exec("echo 'php -f /path/to/file.php foo=1' | at now + 1 minutes", $result);
Потому что в настоящее время он ничего не выводит, когда работает как "нормальный" PHP через Apache, однако выполнение команды в терминале, а также в интерактивной консоли PHP дает ожидаемый результат, например:
php > echo exec("echo 'php -f /path/to/file.php foo=1' | at now + 1 minutes", $result);
warning: commands will be executed using /bin/sh
job 1219 at Sun Jun 10 12:43:00 2012
safe_mode
выключен, и я не могу понять, почему я не получаю вывод отat
с переданным эхо-оператором при выполненииatq
или любой другой похвалы сexec()
дает мне вывод. Я искал и читалэтот вопросвсе безрезультатно.
Как я могу получитьexec()
вернуть вывод изat
либо в строку, либо в массив, если используется второй аргумент сexec()
?