Problemas con la ejecución del trabajo CRON en Ubuntu 20.04 con PHP 7.4 FPM

Problemas con la ejecución del trabajo CRON en Ubuntu 20.04 con PHP 7.4 FPM

Tengo problemas para configurar correctamente el siguiente trabajo CRON para automatizar las copias de seguridad en el sitio web de mi cliente.

El sitio está basado en Joomla y estoy usando Akeeba Backup para gestionar las copias de seguridad. Las recomendaciones para los trabajos CRON de línea de comandos son las siguientes:

Utilice el siguiente comando en la interfaz CRON de su host: /path/to/php /var/www/domain.com/cli/akeeba-backup.php

Recuerde sustituir /path/to/php con la ruta real al ejecutable PHP CLI (Interfaz de línea de comando) de su host. Recuerde que debe utilizar el ejecutable PHP CLI; El ejecutable PHP CGI (Common Gateway Interface) no funcionará con nuestros scripts CRON. Si no está seguro de lo que esto significa, consulte a su anfitrión. Son las únicas personas que pueden proporcionar esta información.

dominio.com utilizado como ejemplo

Tengo CRON instalado y ejecutándose en Ubuntu 20.04.

El siguiente código está encrontab -e

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

El sitio ejecuta PHP 7.4 con FPM instalado.

Cuando ejecuto which phpme devuelve lo siguiente:/usr/bin/php

Cuando ejecuto ls -l /usr/bin/phpme devuelve lo siguiente:lrwxrwxrwx 1 root root 21 Aug 31 18:09 /usr/bin/php -> /etc/alternatives/php

Cuando ejecuto ls -l /etc/alternatives/phpme devuelve lo siguiente:lrwxrwxrwx 1 root root 15 Aug 31 18:53 /etc/alternatives/php -> /usr/bin/php8.0

Como esto muestra la versión 8.0 en lugar de la 7.4, que usa el sitio, ¿significa que el trabajo CRON debería usar la versión 8 en su lugar?

Salida de registro de muestra de/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)

Cualquier ayuda es muy apreciada.

Respuesta1

Los trabajos ejecutados cronno se ejecutan en el mismo entorno de ejecución que tiene en su escritorio. Ninguno de sus PATHcambios u otras configuraciones de variables de entorno ~/.bashrcse propagan automáticamente a su crontrabajo. Por ejemplo, no existe $DISPLAY, por lo que los programas GUI necesitan un tratamiento especial (leer man xhost).

Se pueden establecer variables de entorno para todos cronlos trabajos en el crontabarchivo Read man 5 crontab.

Mira los resultados de echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";aliasen cada uno de tus entornos.

Por "cada uno" me refiero crona Escritorio, puedes dejar batchun "terminal sin GUI" para más adelante, si tienes curiosidad.

información relacionada