Zum Inhalt springen

Cronjob in Typo3 10

Erstellt am 28. Februar 2021 · 7 Antworten · letzte Antwort am 29. September 2022

Tags: TYPO3 10, Frage

maria_sl ·

Hi,
ich habe bei meinem Provider einen Cronjob eingerichtet:
MAILTO=......
*/10 * * * * /kunden/homepages/.../htdocs/..../typo3/sysext/core/bin/typo3 scheduler:run

Und im Scheduler von Typo3 die SCHEDULER TEST-TASK aktiviert. Die manuelle Ausführung funktioniert.

Von meinem Provider erhalte ich folgende Mail:
X-Powered-By: PHP/4.4.9
Content-type: text/html

<br />
<b>Parse error</b>: syntax error, unexpected T_FUNCTION, expecting ')' in <b>/homepages/.../htdocs/typo3_src-10.4.12/typo3/sysext/core/bin/typo3</b> on line <b>20</b><br />

Hat hier jemand einen Tipp für mich?

VG Maria

Julian.​Hofmann ·

Provider wechseln! ;-)

Das schaut danach aus, dass PHP auf der Kommandozeile in Version 4.4 läuft (PHP/4.4.9). Diese Version wird seit 7.8.2008 (Ja, seit 12,5 Jahren) nicht mehr supportet (https://www.php.net/eol.php). Krass, dass ein provider sowas noch betreibt....

Damit erklärt sich dann auch sehr schnell die Meldung: es wird versucht PHP-Code auszuführen, der für die verwendete PHP-Version schlicht nicht ausgelegt ist.
System-Requirements sagen "TYPO3 10 requires PHP >= 7.2 <= 7.4" (https://docs.typo3.org/m/typo3/guide-installation/master/en-us/In-depth/SystemRequirements/Index.html)
Wenn Du den Task manuell ausführst, tust Du das aus dem Browser heraus - da ist eine andere (passende) PHP-Version im Einsatz.

Wende Dich mal an Deinen Provider. Oftmals kann die PHP-Version für CLI geändert werden.

maria_sl ·

Julian, recht herzlichen Dank für deine Hinweise.
Über die Zahlen hinter PHP hatte ich auch gerätselt; auf die Idee, dass dies die PHP-Version ist, bin ich nicht gekommen.

Bei meinem Provider habe ich folgenden Hinweis gefunden:
Sie können über folgende Binärdateien ein Script per Cron aufrufen:
/usr/bin/php4.4 (/usr/bin/php und /usr/bin/php4 sind Symlinks)
/usr/bin/php5.2 (/usr/bin/php5 ist ein Symlink)
/usr/bin/php5.4
/usr/bin/php5.5
/usr/bin/php7.1

Daraufhin habe ich folgende Änderungen gemacht (meine PHP-Version: 7.4) :
*/10 * * * * /usr/bin/php7.1 -f /kunden/homepages/.../htdocs/..../typo3/sysext/core/bin/typo3 scheduler:run

Nun kommt keine Mail mehr bei mir an, sondern Typo3 protokolliert folgenden Fehler:

Core: Exception handler (WEB): Uncaught TYPO3 Exception: Argument 2 passed to Symfony\Component\DependencyInjection\Container::set() must be an instance of Symfony\Component\DependencyInjection\object or null, instance of Composer\Autoload\ClassLoader given, called in /homepages/..../htdocs/typo3_src-10.4.12/typo3/sysext/core/Classes/DependencyInjection/ContainerBuilder.php on line 91 | TypeError thrown in file /homepages/..../htdocs/typo3_src-10.4.12/vendor/symfony/dependency-injection/Container.php in line 150. Requested URL: http:///

Viele Grüße aus dem sonnigen Saarland
Maria

maria_sl ·

Hi,
ich habe es immernoch noch geschafft. Mittlerweile bekomme ich Folgendes gemeldet:

X-Powered-By: PHP/7.4.15
Content-type: text/html; charset=UTF-8

Not called from a command line interface (e.g. a shell or scheduler).

Bei diesem Cronjob:

MAILTO=....
*/10 * * * * /usr/bin/php7.4 /kunden/......scheduler:run

VG Maria

maria_sl ·

Weiterer Vorschlag meines Providers: "... Als Alternative können Sie das PHP-Skript mithilfe eines HTTP-Requests ausführen lassen ... "
Den ich dann wie folgt umgesetzt habe:
*/10 * * * * /usr/bin/curl -s https://....../typo3/sysext/core/bin/typo3?scheduler:run

Das Ergebniss (die aufgerufene Datei wird angezeigt):

#!/usr/bin/env php
<?php
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/

/**
* Command Line Interface module dispatcher
* that executes commands
*/
call_user_func(function () {
$classLoader = require dirname(dirname(dirname(dirname(__DIR__)))).'/vendor/autoload.php';
\TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::run(4, \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_CLI);
\TYPO3\CMS\Core\Core\Bootstrap::init($classLoader)->get(\TYPO3\CMS\Core\Console\CommandApplication::class)->run();
});

VG Maria

maria_sl ·

Hi,
von meinem Provider kam nun dieser Vorschlag eines Cronjobs:

MAILTO: .....
*/10 * * * * /usr/bin/php7.4-cli /kunden/homepages/.../htdocs/t3-10-2021/typo3/sysext/core/bin/typo3 scheduler:run

Vom Cronjab erhalte sich nun diese Rückmeldung:
"There are no commands defined in the "scheduler" namespace."

In Typo3 ist der Planer-Test-Task installiert, dessen manuelle Ausführung funktioniert.

VG Maria

greenbits ·

Hi Maria,
konntest du eine Lösung für die Installation des Schedulers bei 1und1 finden? Ich stehe grade vor dem gleichen Problem.
VG Ralf