Cronjob kann PHP-File nicht ausführen

Hallo,

ich habe den Admin-Worker deaktiviert und stattdessen Cronjobs eingerichtet. Die Cronjobs bei meinem Hoster verweisen auf den relativen Pfad einer PHP-Datei, welche in /public liegt. Rufe ich die PHP-Datei mit domain.de\scheduled_task.php auf, wird sie ohne Probleme ausgeführt. Will allerdings der Cronjob meines Hosters diese Datei aufrufen und ausführen, wird folgende Fehlermeldung angegeben:

PHP Parse error: syntax error, unexpected ‚class‘ (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or ‚{‘ or ‚$‘ in /var/www/vhosts/user.hoster.de/shopname/bin/console on line 24

Hat jemand eine Idee, was es damit auf sich hat? Die PHP-Dateien haben Berechtigung 755, das Console-File ebenfalls.

Gruß Christoph

Auf der Konsole läuft eine andere, meist eine ältere PHP-Version als auf dem Webserver.
Entweder im Befehl die zu verwendende PHP-Version mit angeben oder global vom Provider umstellen lassen, falls man das nicht selbst in der System-Konfiguration kann.

Danke für die schnelle Rückmeldung. Ich kann bei meinem Hoster bei der Cronjob-Erstellung die PHP-Version über ein Dropdown auswählen, welche genutzt werden soll. Sowohl für den Shop als auch den Cronjob werden PHP 8.2(.5) ausgeführt.

kann eigentlich nur auf eine veraltete PHP-Version oder andere php.ini hindeuten, wie bereits @drakon darauf hingewiesen hat. Ansonsten würde der gleiche Fehler auch beim manuellen auftreten.

Sieht dein Script ungefähr so aus?

<?php
exec("/usr/bin/php82 /var/www/htdocs/bin/console scheduled-task:run --time-limit=60 --memory-limit=512M 2>&1", $out, $result);
echo "Returncode: " .$result ."<br>";
echo "Ausgabe des Scripts: " ."<br>";
echo "<pre>"; print_r($out);
?>

Ich habe es jetzt als PHP ausführen lassen, der Cronjob ruft dazu den Link per direkter URL auf. Scheint so zu funktionieren, hoffe ich. Woran würde ich denn erkennen, wenn die Cronjobs nicht arbeiten würden? AdminWorker ist deaktiviert.

Ja, mein Code sieht nahezu so aus, hab nur die Echos entfernt.

.php musst du immer mit php ausführen. Nur bei .sh darfst du sh verwenden. Vermutlich war dies das Problem.

Die Messeges werden dann nicht abgearbeitet, keine E-Mails verschickt, etc. siehst du aber teils nur mit dem Frosh Tool Plugin.

Das ist durchaus möglich. Ich hab mit dem Thema Cronjobs bisher kaum Berührungspunkte gehabt, aber danke für die Antworten.