#php #cron #crontab
#php #cron
Вопрос:
Вот моя ситуация:
Я пытаюсь запустить php-скрипт через cron, и у меня есть crontab (/etc / crontab), который выглядит следующим образом:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/var/www:
MAILTO=<myemailaddress>
m h dom mon dow user command
* * * * * root /usr/bin/php /var/www/testing.php
И когда я запускаю команду /usr/bin/php /var/www/testing.php
из bash / sh, все отлично. Это просто базовый php-скрипт, который записывает какую-то тарабарщину в файл. Однако мой cronjob не выполняется. Я несколько раз использовал перезапуск cron службы sudo, но все безрезультатно. Я упускаю что-то очевидное здесь?
Спасибо и ура!
Решение
Моя собственная ошибка! PHP-скрипт, который я запускал, записывал данные в файл, к которому не был получен надлежащий доступ — например, отсутствовали полные пути к файлам. Всем спасибо за помощь!
Комментарии:
1. У вас есть пустая строка сразу после вашего правила в файле cronjob?
2. Моя фактическая таблица cron начинается и заканчивается ‘#’, где закрывающий знак фунта находится в отдельной строке после моего фрагмента кода прямо там. Это EOF.
3. редактировать :: Думаю, последний комментарий исчез, что касается ОС, это просто Ubuntu. Это главная crontab, а не отдельного пользователя — то есть она находится в /etc/crontab. Пользовательские crontabs не имеют столбца user.
4. Да — я только что сделал
* * * * * root echo hi >> /tmpnonsense
, и это сработало. Каждую минуту он добавлял привет.5. Можете ли вы ответить на свой собственный вопрос таким образом, чтобы помочь другим? Если вы это сделаете, вы можете выбрать свой в качестве правильного ответа. Это может показаться странным, но это предпочтительный способ справляться с подобными ситуациями.
Ответ №1:
Создайте сценарий оболочки и поместите туда команду PHP. Сделайте это executeabl и поместите в crontab.
Тогда вы сможете лучше отслеживать и изменять команду, а также проще настраивать среду (переменные, пути) для php-скрипта.