PHP Script как Cron не работает, но работает из CLI - PullRequest
1 голос
/ 07 ноября 2011

У меня есть php-скрипт, который запускает некоторые magento-действия, и я установил для него cron:

cd /home/dir/public_html; php -f file.php;

Это запускает скрипт, но по какой-то причине он не завершается, cron запускается как пользователь "пользователь", и когда я запускаю команду из терминала от имени пользователя root, он работает отлично. Однако все файлы, которые он использует, разбиты на пользователя. Я думал, что это была проблема с путями, поэтому я добавил команду CD в начало, но это не так.

Я думаю, что это может быть проблема с созданием файла блокировки, я имею его создать файл блокировки, запустить сценарий, затем удалить файл блокировки, чтобы предотвратить его запуск, если он уже есть. Файл блокировки генерируется, но никогда не удаляется, насколько мне известно, если он создает его как пользователя «пользователь», то он также может быть в состоянии удалить его как этот пользователь.

Есть мысли? Очень ценится.

Ответы [ 2 ]

3 голосов
/ 07 ноября 2011

Попробуйте указать полный путь PHP или определить переменную PATH в первых строках crontab:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin:/usr/sbin

Редактировать : более того, вы можете записать свой скрипт так:

* * * * * cd /home/dir/public_html; /usr/bin/php -f file.php; &>/tmp/file.log
1 голос
/ 07 ноября 2011

Вместо вызова php из cronjob, вызовите скрипт оболочки, который затем вызывает файл php.

Затем вы можете изменить среду, в которой выполняется скрипт, без необходимости изменятьcronjob, и вы можете легче протестировать команду cron (как вы можете просто вызвать сценарий оболочки).

Затем в сценарии оболочки вы можете изменить каталог, в котором должен находиться php-скриптчто, безусловно, решит вашу проблему.

Кроме того, вы можете изменить директивы ini, ведение журналов и обработку ошибок оболочки, например, передать STDERR в файл и т. д.информация, приведенная в этом вопросе, может решить вашу проблему: Как заставить версию PHP для командной строки? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...