Как спланировать работу в php скрипте через exec и ‘at’

Я пытаюсь спланировать одноразовую работу с помощью команды «at». В скрипте есть следующий код:

$cmd = 'echo "/usr/bin/php '.$script_dir.$script_name.' '.$args.'"|/usr/bin/at "'.$time.'" 2>&1';
exec($cmd, $output , $exit_code);

Когда я запускаю эту команду из скрипта, она добавляет задание в схему. Это я вижу по строке в логах job 103 at Thu Sep 3 15:08:00 2015 (тот же текст содержит $output). Но тогда ничего не происходит в указанное время, как at игнорирует работу И нет никаких сообщений об ошибках в логах.

Когда я запускаю ту же команду с теми же аргументами из командной строки на сервере, она записывает задание и запускает его в указанное время.

Я обнаружил, что когда я пытаюсь планировать работу с помощью сценария php, он запускается под apache пользователь. Я попытался запустить следующий в командной строке на сервере:

sudo -u apache echo "/usr/bin/php /var/www/pant/data/www/pant.com/scripts/Run.php firstarg secondarg "|/usr/bin/at "16:00 03.09.2015"

Это работает правильно тоже. Я проверил sudoers и добавил пользователя apache с привилегиями NOPASSWD. Скрипт Run.php имеет права на выполнение.

at.deny пустой. at.allow не существует.

Итак, вопрос: почему «at» не запускает команду, заданную через php-скрипт (exec), а запускает ту же команду в командной строке? Как запустить это?
Спасибо всем.

0

Решение

Я случайно нашел ответ на stackexchange.com:

«Проблема» обычно заключается в том, что PHP предназначен для работы в качестве модуля на веб-сервере. Возможно, вам придется установить версию php для командной строки, прежде чем вы сможете запускать сценарии php из командной строки

0

Другие решения

Других решений пока нет …