Fehler beim Update von 19.0.5.2 auf 20.0.2.0 bei Qnap-TS251

Hallo,

ich habe auf meiner Qnap TS-251 mit Firm 4.5.1.1945 Nextcloud 19.0.5.2 laufen.
Bislang habe ich die Nextcloud-Updates immer direkt auf der Konsole per WinSCP/Putty ausgeführt.
Allerdings bekomme ich bei der Aktualisierung auf 20.0.2.0 eine Fehlermeldung.
Den Updater habe ich wie immer so aufgerufen:

ln -s /mnt/ext/opt/apache/bin/php /bin/php

sudo -u httpdusr php /share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/updater/updater.phar

Dieses Mal erhalte ich jedoch beim Punkt 5 (Validierung) folgende Fehlermeldung:

Verify integrity …PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 141997160 bytes) in phar:///share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/updater/updater.phar/lib/Updater.php on line 637

Auf der QNAP gibt es aber unterhalb von /share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/updater/updater.phar keine weiteren Unterverzeichnisse wie in der Fehlermeldung angegeben (…/lib/Updater.php).
Kann evtl. jemand weiterhelfen, ob und wie ich das Upgrade ausführen kann bzw. wo der Fehler liegt und ich ihn beheben kann?
Ich finde einfach nicht, wo die besagte Dateigröße limitiert wird.

MfG
Werner

Hallo Werner

Bei der Suche nach einem ähnlichen Problem bin ich auf deinen Eintrag gestossen.

Das Problem scheint bei dir wie folgt zu sein:
In der Config von php wird standardmässig eine memory_limit von 128M(B) festgelegt (das findest du heraus, wenn du sudo -u httpdusr php -info ausführst und nach dieser Option suchst).
Normalerweise wird diese bei der Installation von Nextcloud angepasst (auf z.B. 2G).
PHP kommt aber mit mehreren Config-Files (die sogenannten php.ini-Dateien), wo diese Option für den Webserver und die CLI unterschiedlich definiert werden kann.

Da ich ein NAS von Synology nutze, kann ich die Option über das Web-GUI definieren. Das geht aber nur für den Webserver, für die CLI müsste ich es direkt in der ini-Datei machen.

Wenn du nun den Updater über die Command Line aufrufst, ziehen natürlich die Standardwerte von 128MB, was für den Updater zu wenig ist. Die Limite kannst du aber beim Aufruf kurzzeitig erhöhen:

sudo -u httpdusr php -d memory_limit=2G /share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/updater/updater.phar

Dabei musst du vorgängig noch über das occ-Command maintenance:repair den aktuellen Update-Prozess “beenden”, weil dieser wohl auch bei dir aktuell bei Schritt 4 hängt.

Ich hoffe das hilft dir weiter.

Beste Grüsse
Michael

Hallo Michael.

bei mir bleibt der Updater beim Step 5 (Validating) stehen. Ich habe jedoch für mich einen Weg gefunden, wie ich fortfahren kann.
Nachdem der Updatevorgang beim Schritt 5 einen Fehler ausgibt, breche ich an dieser zunächst ab.
Dann wechsele ich mit WinSCP nach /share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/data/updater-xxxxxxxx und bearbeite die dann entstandene Datei .step wie folgt:
Uh setze den Wert von {“state”:“start”,“step”:5} auf {“state”:“end”,“step”:5} und führe den Updatevorgang erneut aus.
Nachdem nun die im vorhergehenden Versuch heruntergeladen wurde und nun nicht mehr validiert (Step 5) werden muß, startet der Updater direkt mit dem Entpacken und installiert problemlos die neue Version.
Das Problem mit dem Updater tritt komischerweise immer beim Validierungsschritt auf.
Ich hatte zwischenzeitlich von 19.0.5 auf 19.0.6 upgedatet - absolut problemlos.
Dann beim Versuch von 19.0.6 auf 20.0.2 wieder die Fehlermeldung.
Das gleiche trat auch auf von 20.0.2 nach 20.0.3 und dann von 20.0.3 auf 20.0.4.
Aber durch Bearbeiten der .step-Datei wie oben beschrieben, habe ich bislang alles installiert bekommen.
Übrigens: Diese .step entsteht scheinbar erst, wenn ein Fehler mit dem Updater auftritt und wird wieder entfernt, wenn der Updater erfolgreich durchlaufen wurde.

Wo findet man denn die php.ini für den CLI? Mein Webserver läuft, bedingt durch 8GB Arbeitsspeicher, mit 512MB in der php.ini (Webinterface).

Ich habe noch unter /mnt/HDA_ROOT/.config die Dateien php.ini und php.user.ini gefunden - erstere deckt sich mit den Einstellungen im Webserver.

Gruß
Werner

Hi Werner

Auch gut, wenn du das Problem mit der .step-Datei umgehen kannst (wieder etwas neues gelernt :wink:).

Bei mir ist es tatsächlich auch bei der Aktualisierung von 19.0.6 auf 20.0.2 aufgetreten. Das Update von 19.0.5 auf 19.0.6 ging ohne Probleme.

Ich nehme an die .step-Datei erstellt Nextcloud für den Fall, wenn das Update an einem bestimmten Schritt fehlschlägt, dass man nicht immer wieder beim ersten Schritt beginnen muss.

Durchsuche mal die Ausgabe von sudo -u httpdusr php -info. Hier sollte irgendwo auch der Pfad zu der php.ini für die CLI stehen. Kann es leider bei mir selbst gerade nicht prüfen.

Hast du für den Webserver absichtlich nur 512 MB RAM zugewiesen? Bei Total 8 GB RAM könnte man durchaus auch mehr zur Verfügung stellen.

Grüsse
Michael

Hallo Michael,

das Problem ist, das die QNAP nicht mehr zulässt - wenn ich in der php.ini den Wert von 512 MB z.B. auf 1024 erhöhe und den Webserver neu starte, wird der Wert wieder auf wieder auf 512 zurückgesetzt.
Ich habe bei Qnap nachgefragt - die haben mir geschrieben, daß 512MB der Maximalwert wäre.

Hallo Werner

Schade, dass QNAP hier nicht mehr zulässt. Vor allem weil du mit 8 GB im Vergleich zu mir eine menge Arbeitsspeicher für den Webserver zur Verfügung hättest. Naja, jedenfalls könntest du das Update-Problem temporär mit dem Aufruf des Updaters und dem Parameter -d memory_limit=2G lösen.

Grüsse
Michael

Hallo Michael,

ich werde das beim nächsten anstehenden Update mal probieren.
Vielleicht kann ich mir den Umweg mit dem doppelten Ausführen dann sparen.

Gruß
Werner

1 Like

Das würde ich auf jeden Fall mal ausprobieren! :wink:

Hallo Michael,

gestern wurde das Update auf 20.0.5.0 angeboten - also Dein Weg hat bestens funktioniert!!!
Aber so wie es aussieht, werde ich Nextcloud21 nicht installieren können, weil auf der Qnap nur MariaDB 5.x läuft und Nextcloud warnt, es würde MariaDB 10.x benötigt.

LG
Werner

Hallo Werner

Das klingt super, wobei du mit der MariaDB bereits wieder den nächsten Ärger hast… :sweat_smile: Bei meinem Synology hält es sich noch in Grenzen bzw. hier sind sie relativ schnell mit neueren Versionen…

Vielleicht würde es sich da lohnen, für den Webserver und die Datenbank ein Raspberry Pi o.ä. anzuschaffen, womit du dieses Problem nicht hast. Bei dieser Lösung könntest du dann Qnap per NFS als Storage für das Raspi und Nextcloud einbinden.

Grüsse,
Michael