Nextcloud 22: PHP-Cronjobs gestoppt

Nextcloud Hub 22 deaktiviert PHP-Cronjob
Quelle: Nextcloud

Bereits mit dem Update auf Nextcloud 21.0.3.1 erhielt ich im Backend unter Grundeinstellungen die Warnung, dass der PHP-Cronjob, der eigentlich alle fünf Minuten ausgeführt wird, um die Oberfläche zu aktualisieren, nicht funktioniert. Ich habe zunächst wegen fehlender Zeit auf Ajax umgestellt, was aber bei einem viel genutzten System keine Lösung auf Dauer ist. In der Hoffnung, mit NC 22 werde das Problem gelöst wartete ich ab.

Da diese Hoffnung enttäuscht wurde, ging ich dem Problem auf den Grund. Wie sich herausstellte, war dies kein Bug, sondern eine Änderung, die nur versteckt dokumentiert ist. Die Lösung fand sich im Endeffekt in einer Warnung in der Dokumentation zum Caching im Abschnitt APCu. Dort steht:

APCu is disabled by default on CLI which could cause issues with nextcloud’s cron jobs.

Es werden zwei Lösungen vorgeschlagen. Die Zeile apc.enable_cli=1 kann in eine der beiden Dateien /etc/php/7.4/mods-available/apcu.ini oder /etc/php/7.4/cli/php.ini eingetragen werden. Beides hatte bei mir keine Wirkung. Erst das Editieren des Cronjobs selbst behob das Problem. Dazu wird der Cronjob mit dem Befehl sudo crontab -u www-data -e zum Editieren geöffnet und die Option --define apc.enable_cli=1 angehängt. Der Cronjob sieht dann folgendermaßen aus:

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php --define apc.enable_cli=1

Seitdem läuft der PHP-Cronjob wieder alle 5 Minuten. Vielleicht schaut ihr mal bei eurer Nextcloud ins Backend, ob ihr das Problem auch habt.

Teilt den Beitrag, falls ihr mögt

20 Kommentare

  1. Danke, das ist eine ganz wichtige Info.

    Die Info mit dem Kommandozeilen-Parameter ist hier zu entnehmen: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html

    Einer der Kommentierenden erwähnte, dass zusätzlich eine ini-Option gesetzt werden muss. Die ini-Datei wird vom aktuellen Docker-Image eigentlich schon entsprechend modifiziert, siehe hier: https://github.com/nextcloud/docker/blob/76b79690dc98fba0d372bea6ecebe9c5235e3776/23/apache/Dockerfile#L102

    Bei mir ging es zwar auch erst, nachdem ich händisch eine ini-Datei modifiziert hatte, aber ich vermute, es lag am Ende eher daran, dass ich den Docker-Container neu gestartet habe. Jedenfalls geht es jetzt endlich wieder.

    0
  2. Ich muss noch etwas ergänzen was seltsam ist.
    Ich hatte einen Ordner, der sich nicht löschen ließ. Selbst händisch hatte ich Probleme und dachte es liegt an verschiedenen Synchronisierungen die da laufen hatte. Schon unter der vorherigen php Version war das nicht möglich und dort funktionierte der cron. Jetzt war ein Löschen kein Problem. Wieso hat das Auswirkungen auf die Datenbank? Seltsam….

    0
  3. Habe das gleiche Problem unter Nextcloud 22 und php8.0.
    Mit deiner Eintragung unter:
    nano /etc/php/8.0/mods-available/apcu.ini
    dieses eintragen:apc.enable_cli=1
    und dann unter:
    sudo crontab -u www-data -e
    */5 * * * * php -f /var/www/nextcloud/cron.php –define apc.enable_cli=1
    wurde das Problem gelöst. Musste beides tun – nur eines davon hilft nicht.

    0
  4. Danke für den Tip 🙂
    Das Problem tritt (trat) bei mir seit 22.0.0 auf – Danke für die Lösung – war schon am verzweifeln. Hatte die Einrichtung des Cronjobs in der NC-Dokumetation vorwärts und rückwärts gelesen. Wäre nie auf die Idee gekommen unter Rubrik “APCu” zu suchen…
    Grüße Mike

    0
  5. Da gibt es sogar einen Bug-Report (https://github.com/nextcloud/vm/issues/2039) für das Problem, in dem dann darauf hingewiesen wurde, dass es sich bereits seit ein paar Server-Versionen in der Dokumentation befindet und somit indirekt das Problem auf den “User” abgewälzt – also kein Bug, sondern Feature.

    Dass man so eine Umstellung aber gar nicht ankündigt … oder zumindest nicht in einem kleinen Versionssprung von 21.0.2 von 21.0.3 ohne weitere Hinweise implementiert, ist schon ziemlich übel, finde ich.

    Mit jeder Version bläst man das Projekt mit halb fertigen Neuerungen weiter auf, ohne sich um die mehreren hundert alten Bugs zu kümmern oder lang versprochene Funktionen zu liefern. Seitdem man bei Nextcloud die “Eierlegende Wollmilchsau” werden will, geht es irgendwie abwärts mit dem Projekt.

    1
  6. Danke für den Tipp! Bei mir trat das Problem mit Nextcloud 21 und Debian 10 (Buster), also PHP7.3, ebenfalls auf. Nicht nur während der Cron-Jobs, sondern auch, wenn z.B. occ via CLI aufgerufen wird, um den Maintenance Modus zu aktivieren oder ein Upgrade durchzuführen. Geholfen hat folgendes:

    cat << 'EOF' > /etc/php/7.3/cli/conf.d/99-apc-enable-cli.ini
    ; Enable APCu on CLI to e.g. fix issues with Nextcloud’s cron jobs
    ; Ref.: https://docs.nextcloud.com/server/21/admin_manual/configuration_server/caching_configuration.html
    
    apc.enable_cli = 1
    EOF
    
    0
      1. Die offizielle Doku zu apc.enable_cli schreibt:

        Mostly for testing and debugging. Setting this enables APC for the CLI
        version of PHP. Under normal circumstances, it is not ideal to create,
        populate and destroy the APC cache on every CLI request, but for
        various test scenarios it is useful to be able to enable APC for the CLI
        version of PHP easily.
        

        Insofern ist das selektive Aktivieren via php –define Parameter je nachdem die bessere Wahl.

        0
  7. Bei mir hat der Cronjob nach dem Update auf Nextcloud 21 den kompletten Speicher belegt. In den Standardeinstellungen unter Debian ist memory_limit auf -1 (unbegrenzt) gesetzt bei PHP in der Kommandozeile. Es gibt da auch einen entsprechenden Bugreport eines andere Nutzers unter der Nummer #25742.

    Seitdem sieht mein Cronjob so wie oben aus aber ich habe auch noch memory_limit auf 1GB gesetzt um sicher zu gehen das mir der Cronjob nicht wieder den ganzen Speicher belegt.

    0
  8. Danke 🙂
    aber das ist doch dann was wegen der Distry und nicht Nextcloud, da das sich dann ja nur bei Nextcloud auswirkt.. Ich hab fedora, mal sehen, wenn ich die php-version update ..oder nachschau.. (iss auf jedenfall sichernswert in odt 🙂 )
    Könntest Du vielleicht mal dazu schreiben welche Distro Du benutzt Ferdi.. Danke.
    liebe Grüße
    Blacky

    1
    1. Hat mit der Distribution nicht direkt zu tun, sondern mit dem verwendeten LAMP-Stack. Ob das Problem auch schon mit PHP7.3 auftritt, kann ich nicht sagen. Ich habe verschiedene Nextcloud-Instanzen. Eine betroffene Instanz läuft auf einem aktuellen Debian-Server 10, das Gleiche tritt bei einem Ubuntu-Server 21.04 auf. Eine Instanz hier zu Hause mit Docker muss ich nachher noch überprüfen, die muss ich zunächst aktualisieren.

      1

Kommentar hinterlassen