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
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.
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
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
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
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
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
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/)