This version of Nextcloud is not compatible with PHP>=8.2. beim Update

Auf diesen Fehler bin ich wĂ€hrend der Update-Arbeiten auf meinem Server gestoßen, mit dem Ziel, hier letztlich auf die aktuelle stabile Version zu kommen.
Betriebssystem: Ubuntu 20.04 LTS

  • PHP: 8.0.29
  • MySQL: 10.3.38
  • NC: 25.x
    Eines schon mal vorab, PHP 8.0.29 wird nicht standardmĂ€ĂŸig mit Ubuntu 20.04 LTS (PHP 7.4.3 wurde bereits ersetzt und sogar deinstalliert) ausgeliefert.
    Aber die Entwicklung von Nextcloud ist um ein Vielfaches schneller als die LTS von Ubuntu. So gilt bereits PHP 8.0. bei der Version 28 als veraltet.

Die TĂŒcken liegen nun in der Notwendigkeit, die jeweiligen PHP-Versionen auf dem Server zu installieren und zu aktivieren. Dann passt aber auch die Dokumentation nicht mehr.

Obiger Fehler tritt z.B. bei einem banalen Update innerhalb der Hauptversion auf und der manuellen DurchfĂŒhrung der Update der Indizes auf.

Anstelle von
sudo -u www-data php occ db:add-missing-indices
ist z.B. ein
sudo -u www-data php8.0 occ db:add-missing-indices
notwendig, weil zwar der Apache alles klar hat, aber auf der Konsole das irrelevant ist, weil hier mit php die Version 8.2 gemeint ist.
Um zu ĂŒberprĂŒfen, welche Version von PHP zur VerfĂŒgung stehen z.B. wie folgt vorgehen:

sudo -u www-data php8.0 -v
sudo -u www-data php -v

Das stimmt. Oder auf Ubuntu 22.04 updaten. Das kommt mit PHP 8.1.

HÀngt davon ab, wie die zusÀtzlichen PHP-Versionen installiert wurden. Die PHP-Pakete aus dem Sury Repo, haben mit update-alternatives einen Mecano um eine bestimmte Version als Standard auszuwÀhlen.

Oder du könntest die alten Versionen deinstallieren, wenn du sie nicht mehr brauchst, denn wenn du nur eine Version installiert hast, ist diese automatisch die Standardversion. :wink:

Oder du könntest in der .bashrc den Pfad entsprechend setzen (falls aus einer anderen Quelle installiert):

export PATH="/pfad/zu/deiner/php/version/bin:$PATH"


oder einen Symlink setzen:

sudo ln -s /pfad/zu/deiner/php/version/bin/php /usr/local/bin/php

Und/oder ein Bash Alias einrichten fĂŒr das occ ommand, indem du in der .bashrc z.B. folgendes hinzufĂŒgst:

alias nocc="sudo -u www-data php8.0 /pfad/zum/nextcloud/occ"

Dann musst du nur noch


nocc db:add-missing-indices


eingeben, und nicht mehr die ganze Litanei.

@Mike07
Du hĂ€ttest nie eine neue PHP-Version außerhalb der Ubuntu-Standardquelle installieren mĂŒssen. Dein Fehler ist eher, dass du dein Ubuntu 20.04 LTS immer noch nicht auf Ubuntu 22.04 LTS aktualisiert hast. Und bald gibt es schon Ubuntu 24.04 LTS und du kannst dann Ubuntu 22.04 LTS sowieso nicht ĂŒberspringen. Du hast also dir nur unnötige MĂŒhe gemacht und am Ende nichts gespart.

Schau dir die PHP-Versionen und die Requirements von Nextcloud an. Und nicht, was Nextcloud fĂŒr toll findet, sondern was Nextcloud fĂŒr noch ausreichend hĂ€lt. Da findest du geeignete Upgrade-Pfade ohne Verwendung von PHP-Fremdquellen.

Es macht Sinn noch mit Nextcloud 25 auf Ubuntu 22.04 LTS und dessen Standard-PHP-Version zu wechseln. Denk daran anschließend die PHP-Fremdpakete rauszuwerfen.

Ubuntu 20.04 LTS mit PHP 7.4
Ubuntu 22.04 LTS mit PHP 8.1
Ubuntu 24.04 LTS wahrscheinlich mit PHP 8.2

Requirements Nextcloud 28
Requirements Nextcloud 27
Requirements Nextcloud 26
Requirements Nextcloud 25

1 Like

Es macht vor allem Sinn, die Dokumentation von dem Zeug das man benutzt zu lesen, egal ob man nur die OS Quellen oder auch andere Quellen benutzt. Denn wie schon gesagt gibt es einen einfachen Mecano um problemlos mehrere PHP Versionen aus den Sury Repos verwalten zu können. HÀtte man wissen können, wenn man die Doku gelesen hÀtte :wink:

Btw. auch nach einem OS-Update mit ausschließlich Standardquellen kann es passieren, dass etwas nicht auf Anhieb funktioniert. Aber ja klar, ohne Fremdquellen hat man eine potentielle Fehlerquelle weniger in der Gleichung, und dadurch, dass sehr viele Leute Standard Ubuntu nutzen, ist die Chance relativ hoch, dass die LösungsvorschlĂ€ge, die man dann mal auf gut GlĂŒck aus dem Forum oder einer zufĂ€lligen Anleitung aus dem Internet kopiert, tatsĂ€chlich funktionieren, auch wenn man nicht so der Typ ist, der gerne Dokus liest und man eigentlich keine Ahnung hat, was man da gerade kopiert hat :wink:

Btw. der erste Vorschlag in meinem Beitrag war ein Update auf Ubuntu 22.04.

Es ist aber lÀngst nicht die einzige legitime Möglichkeit, wie man PHP aktualisieren kann, und dann so einrichten kann, dass die PHP Version, die man nutzen will, auch diejenige ist, die aufgerufen wird, wenn mit in der CLI ein Skript via php Befehl aufruft.

Und folgendes hÀtte ich vielleicht noch zu meinem Beitrag hinzuschreiben sollen:

Meine Auflistung sollte Ideen liefern, wie man das Problem im Originalbeitrag lösen oder umgehen kann, ohne die einzelnen VorschlÀge zu werten. Die Codeblocks sollten Beispiele sein, und keinesfalls einfach blind kopiert werden. Aber OP und auch andere Leser könnten mal den Link anklicken zur Sury Doku, und vielleicht mal Symlink und Bash Alias googeln, und vielleicht etwas lernen dabei.

Aber ja man kann auch einfach alle zwei Jahre auf das neuste Ubuntu LTS updaten, und das ist ok, und warscheinlich auch die beste Lösung, wenn man sich so wenig wie möglich mit seinem System beschÀftigen will. (Dieses Mal meine ich das ganz ohne Ironie :slight_smile: )

ZunĂ€chst mal danke fĂŒr die Infos.
In den “originalen Dokumentationen” von Nextcloud habe ich keine Beschreibung gefunden, wie man vor einem Update auf die nĂ€chste Version sicherstellen kann, dass die passende PHP-Version auch vorhanden ist. So wie ich das sehe, wird hier eben davon ausgegangen, dass man die “geeignete” Distro am Laufen hat, also eben die, die die passenden Pakete beinhaltet.

Da ich vor dem Problem stand, die Nextcloud Version anzupassen, mit Blick auf die zugehörigen Dokumentationen vor der DurchfĂŒhrung festgestellt habe, dass die Systemvoraussetzungen nicht mehr erfĂŒllt sind, habe ich mich auf die Suche nach einer Lösung gemacht und auch eine gefunden. Aber eben nicht hier und auch nicht spezifisch auf Nextcloud angepasst.

Und man muss auch nach der Installation natĂŒrlich die richtige PHP-Version aktivieren und die zugehörige Konfigurationsdatei anpassen:

sudo a2dismod php7.4
sudo a2enmod php8.0

Aber das nur mal am Rande. NatĂŒrlich ist mein Wunsch, die jeweils neuste LTS-Version von Ubuntu einzusetzen. Und ja, man kann wenn man leidensfĂ€hig genug ist, dies ja locker auf einem Liveserver mit einigen Instanzen von Weblösungen, die nicht nur Nextcloud sind, einfach mal durchziehen. Wenn der reboot erfolgreich war, ist die schwierigste HĂŒrde gemeistert.

Ich arbeite jedoch eine Migration durch, mit dem das Ziel ist es den point-of-no-return so weit nach hinten zu schieben, wie es geht und weiterhin ein stabiles System zu haben. Auf dem jetzigen Server werden die jeweiligen Webhosting Instanzen soweit upgedatet, dass diese ohne Probleme auf dem jetzigen Server weiterhin laufen und auf einem Ubuntu 22.04 LTS mit Standardpaketen ĂŒbertragbar sind. Und dann beginnt irgendwann mal das Ganze von vorne. :grinning:

Das kann man sicherstellen, in dem man die Anforderungen liest von allen Komponenten die man einsetzt, sei es es vor OS Update, einem PHP Update, einem Nextcloud Update, CMS Update, und anderen Webapps, die du allenfalls noch hostest.

Und wie gesagt, du kannst auch mehrere PHP Versionen parellel Installiert haben und z.B. separate PHP-FPM Pools per Site mit unterschiedlichen Konfiguartionen fahren. Oder Docker Container nutzen, anstatt alles auf OS Ebene zu installieren und zu konfigurieren.

Klar ist aber auch das die KomplexitÀt steigt, je mehr du gleichzeitig auf einem Server hostest. Da kann die Nextcloud Doku nur bedingt helfen. Du kannst aber gerne Pull Requests mit Verbesserungen einrichen. Dokumentation ist ein guter Weg aktiv zu einem OSS Projekt beizutragen, auch wenn man kein Entwickler ist.

Vielleicht wÀre es mittelfristig besser Nextcloud und die Websites auf separaten Servern zu hosten, und dann allenfalls sogar Nextcloud AIO zu nutzen.

Klar zwei separate Server sind natĂŒrlich u.U. ein Kostenfaktor, aber Nextcloud ist schon als manuelle Standalone-Installation aufwĂ€ndiger zu managen als z.B. ein CMS System wie Wordpress. Es braucht hĂ€ufiger neue PHP Versionen, braucht spezifische Konfigurationsparameter, um optimal zu laufen, die sich z.T deutlich von denen fĂŒr ein CMS System unterscheiden.

Das alles ist natĂŒrlich lösbar, z.B. (wie schon erwĂ€hnt) mit mehreren PHP-Versionen auf dem gleichen Server und getrennten PHP-FPM-Pools. All das erhöht aber die KomplexitĂ€t noch mehr, als sie ohnehin schon ist, was die Wartung des Servers nicht einfacher macht, vor allem wenn man kein Vollzeit-Admin ist und noch andere Dinge zu tun hat, als sich den ganzen, ohnehin schon viel zu kurzen Tag um den Server zu kĂŒmmern. :wink: