Cronjob findet PHP-Pfad nicht, um Shopware-Scheduler auszuführen

  • Hallo,

    wir haben einen "managed private Server" und wollten jetzt im Plesk die Cronjobs für Shopware einrichten.
    Befehl: /usr/local/php82/bin/php /var/www/vhosts/shop.domain.de/httpdocs/bin/console scheduled-task:run --time-limit=300

    Beim Ausführen wird dabei immer nur folgender Fehler geworfen:
    -: Zeile 1: /usr/local/php82/bin/php: Datei oder Verzeichnis nicht gefunden
    Rufen wir den Befehl direkt in der Shell auf klappt es einwandfrei.

    Wir haben auch schon versucht, die Befehle über eine cron.sh aufzurufen (sh /httpdocs/cron.sh).
    Aber auch dies klappt nicht und bringt die gleichen Fehler.

    Hat jemand evtl. einen Tipp, wie man die Shopware-Befehle korrekt angeben muss, damit diese auch mit der richtigen PHP-Version ausgeführt werden?

  • Ich weiß nicht, wie ähnlich die Webhosting-Pakete den Managed PS Tarifen sind. Aber hast Du diese Möglichkeit in Plesk nicht?

    Screenshot 2024-05-30 at 15-05-17 Aufgabe planen - Webhostingcontrolpanel (WCP).png

    Alternativ schau Dir mal die Datei /conf/phpversion an und teste es nur mit php, siehe: Nutzung von PHP via Shell

    Ob das bei den Managed PS Tarifen ebenfalls so möglich ist, weiß ich halt nicht. Ansonsten kann wohl nur der Support helfen :)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    2 Mal editiert, zuletzt von KB19 (30. Mai 2024 um 15:08)

  • Doch, das habe ich.

    Ich brauche aber zwingend den Typ "Befehl ausführen", da ich Konsolen-Befehle ausführen muss.

    Shopware6 hat meines Wissens nach leider keinen Webaufruf für den Cron mehr.

    /conf/phpversion habe ich mir auch angeschaut, dies hat aber keine Wirkung.

  • Du rufst aber ein normales PHP-Script mit Argumenten auf, wozu sonst das PHP-Binary am Beginn? Wieso sollte das mit der anderen Methode nicht gehen? :)

    Jetzt bin verwirrt.

    manuell muss ich in der Console vor dem Befehlsaufruf "bin/console scheduled-task:run --time-limit=300" den PHP-Interpreter-Pfad angeben.
    Sonst läuft der Befehl nicht.
    So wie ich das verstanden habe, wird innerhalb des Consolenbefehls erst das PHP abgearbeitet.

    Meinst Du man kann diese Consolen-Befehle auch direkt über den Typ "PHP-Skript" aufrufen auch wenn diese keine .php-Endung haben?

    Wenn ja, wie müsste man denn den Console-Befehl "httpdocs/bin/console messenger:consume --time-limit=300 failed async low_priority" im Skriptpfad-Feld hinterlegen?

  • Meinst Du man kann diese Consolen-Befehle auch direkt über den Typ "PHP-Skript" aufrufen auch wenn diese keine .php-Endung haben?

    Ja! Das genannte Script ruft über die Shebang doch auch nur PHP auf ;)

    • Skriptpfad: httpdocs/bin/console
    • mit Argumenten: messenger:consume --time-limit=300 failed async low_priority

    Falls das nicht funktioniert, probiere es danach auch nochmals mit einem Slash (/) vor httpdocs.

    Und poste unbedingt die genaue Fehlermeldung, falls es nicht klappt. :)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    3 Mal editiert, zuletzt von KB19 (3. Juni 2024 um 11:18)

  • Hier die Rückmeldung, nachdem ich es mit den Argumenten aufgerufen habe:

    • [OK] Consuming messages from transports "failed, async, low_priority". // The worker will automatically exit once it has been running for 300s or // received a stop signal via the messenger:stop-workers command. // Quit the worker with CONTROL-C. // Re-run the command with a -vv option to see logs about consumed messages.

    Mein Aufruf:
    Skripfad: httpdocs/bin/console
    mit Argumenten: messenger:consume --time-limit=300 failed async low_priority

  • Sollte per "PHP-Script ausführen" aber doch problemlos möglich sein?!?

    Code
    Skriptpfad: /var/www/vhosts/shop.domain.de/httpdocs/bin/console
    mit Argumenten: scheduled-task:run --time-limit=300

    Dann noch die passende PHP-Version auswählen. Das sollte eigentlich klappen. Ansonsten sollte der Support helfen können, zur Not muss man das wohl selbst eskalieren, wenn der Support das nicht will oder kann und auch auf keine funktionierende Doku veweisen kann. Oder zumindest im Forum erst mal die passenden Mitarbeiter darauf aufmerksam machen. Ich denke schon, es wird bei netcup jemanden geben der weiss, wie man auf einem Managed(?) Server einen Cronjob einrichtet.