[Frage] Cronjob in Typo3 10 TYPO3-Version: 10.4.12

  • maria_sl maria_sl
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    28. 02. 2021, 20:22

    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

    Tags: Cronjob
  • Hilfreichster Beitrag

  • 1 x
    16 Beiträge
    1 Hilfreiche Beiträge
    29. 09. 2022, 12:11 - Hilfreichster Beitrag

    Okay, ich habe die Lösung gefunden.
    Das Script muss explizit im CLI-Modus aufgerufen werden. Bei 1und1 muss daher an die PHP-Version die Endung -cli angehängt werden. Der Aufruf sieht dann z.B. so aus:
    */5 * * * * /usr/bin/php7.4-cli -f /xxx/xxx/typo3/sysext/core/bin/typo3 scheduler:run

    (https://www.ionos.de/hilfe/hosting/php-fuer-web-projekt-verwenden/ausfuehren-von-php-skripten-ueber-die-kommandozeile-shell/)


  • 1
  • 0 x
    3273 Beiträge
    157 Hilfreiche Beiträge
    01. 03. 2021, 11:54

    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.

    Kleiner Hinweis:
    das Forum hier ist leider nicht mehr so frequentiert :-(
    Für schnellere Hilfe und mehr Leser, guck mal
    - auf stackoverflow ( https://stackoverflow.com/questions/tagged/typo3 )
    - oder in die slack-Channels ( https://typo3.org/community/meet/chat-slack )

  • maria_sl maria_sl
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    02. 03. 2021, 13:19

    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 maria_sl
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    04. 03. 2021, 10:34

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

    [code]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).[/code]

    Bei diesem Cronjob:

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

    VG Maria

  • maria_sl maria_sl
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    04. 03. 2021, 11:19

    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 maria_sl
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    08. 03. 2021, 14:27

    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

  • 0 x
    16 Beiträge
    1 Hilfreiche Beiträge
    06. 09. 2022, 16:53

    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

  • 1 x
    16 Beiträge
    1 Hilfreiche Beiträge
    29. 09. 2022, 12:11

    Okay, ich habe die Lösung gefunden.
    Das Script muss explizit im CLI-Modus aufgerufen werden. Bei 1und1 muss daher an die PHP-Version die Endung -cli angehängt werden. Der Aufruf sieht dann z.B. so aus:
    */5 * * * * /usr/bin/php7.4-cli -f /xxx/xxx/typo3/sysext/core/bin/typo3 scheduler:run

    (https://www.ionos.de/hilfe/hosting/php-fuer-web-projekt-verwenden/ausfuehren-von-php-skripten-ueber-die-kommandozeile-shell/)

  • 1