Я боролся с exec()
, пытаясь захватить вывод из него, когда добавляю задачу с помощью системной команды at
Unix. Моя проблема заключается в том, что он не выводит вывод при запуске из моего script, однако его запуск с терминала и 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
с помощью входящего в echo оператора, при выполнении atq
или любой другой оценки с помощью exec()
дает мне вывод, Я искал и читал этот вопрос, все это безуспешно.
Как я могу получить exec()
для возврата вывода из at
в строку или массив, если использовать второй аргумент с exec()
?