Probleme mit der Ausführung von CRON-Jobs unter Ubuntu 20.04 mit PHP 7.4 FPM

Probleme mit der Ausführung von CRON-Jobs unter Ubuntu 20.04 mit PHP 7.4 FPM

Ich habe Probleme, den folgenden CRON-Job ordnungsgemäß einzurichten, um Backups auf der Website meines Kunden zu automatisieren.

Die Site basiert auf Joomla und ich verwende Akeeba Backup für die Backups. Die Empfehlungen für die CRON-Jobs in der Befehlszeile lauten wie folgt:

Verwenden Sie den folgenden Befehl in der CRON-Schnittstelle Ihres Hosts: /Pfad/zu/php /var/www/domain.com/cli/akeeba-backup.php

Denken Sie daran, /path/to/php durch den tatsächlichen Pfad zur ausführbaren PHP-CLI-Datei (Command Line Interface) Ihres Hosts zu ersetzen. Denken Sie daran, dass Sie die ausführbare PHP-CLI-Datei verwenden müssen; die ausführbare PHP-CGI-Datei (Common Gateway Interface) funktioniert nicht mit unseren CRON-Skripten. Wenn Sie sich nicht sicher sind, was dies bedeutet, wenden Sie sich bitte an Ihren Host. Nur dieser kann Ihnen diese Informationen geben.

domain.com als Beispiel

Ich habe CRON installiert und es läuft auf Ubuntu 20.04.

Der folgende Code ist incrontab -e

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

Auf der Site wird PHP 7.4 mit installiertem FPM ausgeführt.

Beim Ausführen which phpwird Folgendes zurückgegeben:/usr/bin/php

Beim Ausführen ls -l /usr/bin/phpwird Folgendes zurückgegeben:lrwxrwxrwx 1 root root 21 Aug 31 18:09 /usr/bin/php -> /etc/alternatives/php

Beim Ausführen ls -l /etc/alternatives/phpwird Folgendes zurückgegeben:lrwxrwxrwx 1 root root 15 Aug 31 18:53 /etc/alternatives/php -> /usr/bin/php8.0

Da hier Version 8.0 statt 7.4 angezeigt wird, die von der Site verwendet wird, bedeutet dies, dass der CRON-Job stattdessen Version 8 verwenden sollte.

Beispiel-Logausgabe von/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)

Jede Hilfe wird sehr geschätzt.

Antwort1

Jobs, die über ausgeführt werden, cronwerden nicht in derselben Laufzeitumgebung ausgeführt, die Sie auf Ihrem Desktop haben. Keine Ihrer PATHÄnderungen oder anderen Umgebungsvariableneinstellungen von ~/.bashrcwerden automatisch an Ihren cronJob weitergegeben. Beispielsweise gibt es kein $DISPLAY, daher benötigen GUI-Programme eine spezielle Behandlung (lesen Sie man xhost).

Man kann Umgebungsvariablen für alle seine cronJobs in der crontabDatei Read setzen man 5 crontab.

Sehen Sie sich die Ergebnisse echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";aliasin jeder Ihrer Umgebungen an.

Mit „jeder“ meine ich croneinen Desktop. batchWenn Sie neugierig sind, können Sie ein „Nicht-GUI-Terminal“ für später aufheben.

verwandte Informationen