Cron запускает WP-CLI без ручного входа: как не сломать расписание
Главная ошибка — писать команду так, будто она выполнится в твоей текущей сессии. В cron нет нужной среды: не тот PATH, другой пользователь, нет переменных shell. Поэтому в задании указывай полный путь к php и к wp, а рабочую директорию фиксируй через cd.
Базовая схема простая:
• cd /var/www/site && /usr/bin/php /usr/local/bin/wp post update ...
• логируй вывод в файл, иначе искать сбой придётся вслепую
• перед запуском проверь команду вручную под тем же пользователем, что и cron
Ещё одна частая проблема — права на файлы и доступ к базе. Если задача крутится от root, а сайт принадлежит другому пользователю, можно получить странные ошибки с кэшем, медиа и временными файлами. Безопаснее запускать cron от владельца сайта и отдельно контролировать, какие команды вообще нужны автоматизации.
Для сложных сценариев удобно выносить команду в shell-скрипт: внутри добавить cd, export нужных переменных, запуск WP-CLI и проверку кода возврата. Так проще менять логику и не править длинную строку прямо в crontab.
Перед боевым запуском сделай одно: повтори расписание вручную из терминала и посмотри лог. Если команда не пишет в файл и не завершается без ошибок, в cron она тоже не станет магически надёжной.
WP-CLI и командная строка
@wp_cli_tricks_ww
Cron запускает WP-CLI без ручного входа: как не сломать расписание
Этот пост опубликован в Telegram-канале WP-CLI и командная строка. Подписаться можно по ссылке: @wp_cli_tricks_ww.