Проблемы с выполнением заданий CRON в Ubuntu 20.04 с PHP 7.4 FPM

Проблемы с выполнением заданий CRON в Ubuntu 20.04 с PHP 7.4 FPM

У меня возникли проблемы с правильной настройкой следующего задания CRON для автоматизации резервного копирования на веб-сайте моего клиента.

Сайт основан на Joomla, и я использую Akeeba Backup для управления резервными копиями. Рекомендации для заданий CRON командной строки следующие:

Используйте следующую команду в интерфейсе CRON вашего хоста: /path/to/php /var/www/domain.com/cli/akeeba-backup.php

Не забудьте заменить /path/to/php на реальный путь к исполняемому файлу PHP CLI (Command Line Interface) вашего хоста. Помните, что вы должны использовать исполняемый файл PHP CLI; исполняемый файл PHP CGI (Common Gateway Interface) не будет работать с нашими скриптами CRON. Если вы не уверены, что это значит, обратитесь к своему хостеру. Они единственные, кто может предоставить эту информацию.

domain.com использован в качестве примера

У меня установлен и запущен CRON на Ubuntu 20.04.

Следующий код находится вcrontab -e

0 3 * * * /usr/bin/php7.4 /var/www/domain.com/cli/akeeba-backup.php --profile=1 --description="Full automated backup"

Сайт работает под управлением PHP 7.4 с установленным FPM.

При запуске which phpвозвращается следующее:/usr/bin/php

При запуске ls -l /usr/bin/phpвозвращается следующее:lrwxrwxrwx 1 root root 21 Aug 31 18:09 /usr/bin/php -> /etc/alternatives/php

При запуске ls -l /etc/alternatives/phpвозвращается следующее:lrwxrwxrwx 1 root root 15 Aug 31 18:53 /etc/alternatives/php -> /usr/bin/php8.0

Поскольку здесь показана версия 8.0 вместо 7.4, которую использует сайт, означает ли это, что задание CRON должно использовать версию 8?

Пример вывода журнала из/var/log/syslog

Oct 1 11:39:01 domain CRON[38538]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)

Любая помощь будет высоко оценена.

решение1

Задания, которые запускаются, cronне запускаются в той же среде выполнения, что и на вашем рабочем столе. Никакие ваши PATHизменения или другие настройки переменных среды не ~/.bashrcраспространяются автоматически на ваше cronзадание. Например, нет $DISPLAY, поэтому программы с графическим интерфейсом пользователя требуют особого обращения (читайте man xhost).

cronВ crontabфайле Read можно задать переменные окружения для всех своих заданий man 5 crontab.

Посмотрите на результаты echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";aliasв каждой из ваших сред.

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

Связанный контент