Workaround : Cron für Nextcloud bei all-inkl.com

Der RSS-Reader für Nextcloud stellt besondere Anforderungen an die automatische Aktualisierungs-Funktion. Ajax-Cron und WebCron genügen nicht. Richtige Cron-Jobs bietet all-inkl.com nicht. Mit diesem kleinen Workaround funktioniert es aber trotzdem.
Wer Nextcloud mit der News-App auf einem all-inkl.com Server betreibt stellt fest, dass das Plugin verlangt, einen richtigen Cronjob einzurichten. Laut Entwickler dauert es oft zu lange, viele RSS-Feeds zu aktualisieren. Die Webserver brechen das dann ab und die Feeds werden nicht aktualisiert.
Um auf dieses Problem hinzuweisen, bevor es auftritt, verlangt das Plugin, dass man man Nextcloud auf einen richtigen Cronjob umstellt. Bei meinem Hoster all-inkl.com gibt es aber keine richtigen Cronjobs. Es gibt nur WebCrons.
Es gibt aber die Möglichkeit, auf der Console Befehle auszuführen. Man kann also per WebCron ein Skript aufrufen, dass per Console die cron.php aufruft. Ich weiß nicht, warum das dann vom Timeout ausgenommen ist – aber es funktioniert.
Ich habe dafür im NextCloud-Verzeichnis eine Datei mit dem Namen webcron.php anlegt mit folgendem Inhalt:
<?php exec("/usr/bin/php73 cron.php 2>&1", $out, $result); echo "Returncode: " .$result ."<br>"; echo "Ausgabe des Scripts: " ."<br>"; echo "<pre>"; print_r($out);
Ich rufe dann mit dem WebCron von all-inkl.com alle paar Minuten diese URL auf: http://www.example.com/webcron.php – Fertig.
Kommentare
Hallo!
Danke für den Tip. Habe das selbe Problem.
Lege ich eine Datei nach deinen Vorgaben an, kommt bei mir nach Aufruf der Datei eine Fehlermeldung.
Parse error: sytax error, unexpected ‚cron‚(T_STRING), expecting)‚in /www/.…/webcron.php on line 2
Was sagt mir das?
Gruß
11. September 2019 um 19:29 UhrKlaus
Hallo nochmal!
11. September 2019 um 20:28 UhrIch hatte leider die falschen Anführungsstriche mitkopiert.
Jetzt läuft es! Superund Danke!!
Danke für den Hinweis mit den falschen Anführungszeichen. Ich hab das mal korrigiert.
11. September 2019 um 21:38 UhrEin Tipp von mir: Die Nextcloud-Update laufen jetzt natürlich nur durch, wenn man vorher die Cron-Datei kurz verschiebt.
11. September 2019 um 21:40 UhrToller Tipp, funktioniert auch problemlos auf einem Webhost von Hetzner 🙂
Dumme Frage, aber macht das nichts, dass das Skript einfach so mit dem letzten „echo“ endet?
Also ich habe die drei „echo“ auskommentiert und stattdessen
exit ($result);
?>
angehängt. Dem von mir benutzten Webcron-Dienst scheint das egal zu sein, da kommt bei beiden Varianten als Status immer nur „200 OK“.
17. Oktober 2019 um 12:54 UhrDu kannst es auch weglassen – Das ist reiner Debug-Code.
18. Oktober 2019 um 18:54 UhrIch hatte das Problem, dass sich die Datei nicht aufrufen lies, das habe ich geändert mit einem Eintrag in der ‚.htaccess’ Datei.
Der Block ‚mod_rewrite’ muss noch um die ‚webcron.php’ Datei ergänzt werden:
# .….. weitere einträge
RewriteCond %{REQUEST_FILENAME} !/public.php
RewriteCond %{REQUEST_FILENAME} !/cron.php
RewriteCond %{REQUEST_FILENAME} !/webcron.php
RewriteCond %{REQUEST_FILENAME} !/core/ajax/update.php
# .…… weitere einträge
RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
RewriteRule . index.php [PT,E=PATH_INFO:$1]
RewriteBase /
SetEnv front_controller_active true
DirectorySlash off
Das Script funktioniert jetzt auch bei mir, geniale Lösung. Möglicherweise solltest du das an die Nextcloud-Entwickler vermelden.…
25. Oktober 2019 um 10:00 UhrMoin Steffen,
ich hatte mir eine solche Lösung auch mal erarbeitet, allerdings funzt sie bei mir seit dem Update auf 18.0.1 nicht mehr. Wie sieht’s bei Dir aus?
Viele Grüße
8. März 2020 um 13:08 UhrJan
Ha, Fehler gefunden.
Mein Skript hat das Standard-PHP aufgerufen, welches wohl nicht 7.2 (minimum für NC18.0.1) ist. Nach kleiner Anpassung geht’s wieder 🙂
Viele Grüße
8. März 2020 um 14:40 UhrJan
Danke für diesen Artikel! Bei mir funktionierte Webcron mit dem all-inkl Cron Tool nicht.
Es rief zwar cron.php auf, und ich habe eine Email mit „success“ bekommen, aber in meinem Nextcloud 19 stand immernoch, dass Cronjobs seit Monaten nicht ausgeführt wurden.
Mit deinem Skript funktioniert alles super jetzt, eigenartigerweise.
Viele Grüße,
20. Dezember 2020 um 13:06 UhrAndy
Danke für den Tipp mit dem Script. Cron läuft nun, und in den Grundeinstellungen bei „Hintergrund-Aufgaben“ steht, das alles ok ist. Trotzdem wird das „News“ Modul nicht aktualisiert, ich bin auf all-inkl mit php 7.3
27. Dezember 2020 um 10:51 Uhr