Cronjob für TYPO3 Scheduler bei Shared Hosting einrichten

Wenn die Ausführung des Shell-Skripts, das den TYPO3-Scheduler starten soll, fehlschlägt, kann es am Aufruf von PHP im falschen Modus liegen. PHP muss dafür im CLI-Modus laufen.

Ausgangssituation: Shared Hosting (z.B. Strato), der Planer in TYPO3 ist installiert, aktiviert und die Tasks sind eingerichtet, ein Shell-Skript soll via Cronjob die Ausführung regelmäßig anstoßen. Der Aufruf des Shell-Skripts ist als Cronjob im Kunden-Login mit korrektem Pfad eingetragen, das Skript kann ausgeführt werden, d.h. die Rechte sind korrekt gesetzt.

Inhalt des Shell-Skripts:

#! /bin/bash
env -i /usr/bin/php -f /home/ordner-1/ordner-2/ordner-n/htdocs/ihre-domain/typo3/sysext/core/bin/typo3 scheduler:run

Beim Aufruf des Shell-Skripts erscheint die Fehlermeldung "Not called from a command line interface (e.g. a shell or scheduler)."   

Ursache: Die aufgerufene PHP-Version in /usr/bin/ läuft offenbar im CGI-Modus.

Abhilfe: Es muss explizit eine im CLI-Modus laufende PHP-Version zur Ausführung des Skripts aufgerufen werden. Diese muss zur PHP-Version passen, die in TYPO3 verwendet wird (beide also z.B. PHP 7.4).

Inhalt des Shell-Skripts nach Anpassung:

#! /bin/bash
env -i /opt/RZphp74/bin/php-cli -f /home/ordner-1/ordner-2/ordner-n/htdocs/ihre-domain/typo3/sysext/core/bin/typo3 scheduler:run

Der Aufruf env -i sorgt dafür, dass vorher gesetzte Umgebungsvariablen ignoriert werden.