NextcloudPi zeigt falsche PHP-Version an

Liebe Community,

ich habe im Frühjahr 2025 NextcloudPi nach der Anleitung von Mike auf einem Pi5 installiert. Am Pi hängt eine IcyBox mit 2x 2TB-Festplatten (Raid1). Alles läuft soweit prima bis auf den Umstand, dass im System an irgendeiner Stelle noch die veraltete PHP 8.1-Version festhängt und diese nun beim ncp-dist-upgrade Probleme verursacht.

Beim Ausführen von ncp-dist-upgrade kommt die Meldung, dass noch PHP 8.1 installiert sei und ich zuerst NextcloudPi updaten solle, was aber auf dem aktuellen Stand ist (v1.58.0).

Der Reihe nach:

Zum Zeitpunkt der Installation letztes Jahr war die NextcloudPi-Version v1.55.0 aktuell. Diese beinhaltete schon PHP 8.3. Leider bootete NextcloudPi nicht vollständig. Ich hatte dann einen Monitor drangehängt und gesehen, dass das PHP-Modul nicht geladen werden konnte.

Ich habe dann v1.54.0 installiert. Diese bot erstmals support für Pi5 an, beinhaltete aber noch PHP 8.1. Diese Installation hat funktioniert. Alles bootete ordentlich und ich konnte die Installation abschließen.

Nextcloud hatte ich über den Browser aktualisiert, NextcloudPi via Terminal. Alles läuft in der jeweils neuesten Version.

Was beim Update von NextcloudPi auf dem Pi5 nicht geklappt hatte, also von damals 1.54.0 auf 1.55.0 war das darin inkludierte Update von PHP 8.1 auf PHP 8.3. Dies hatte ich dann über ein Skript manuell gemacht:

grafik

Alle alten Versionen hatte ich manuell entfernt.

In den Admin-Einstellungen der NC sehe ich unter System die von mir gewollte PHP 8.3-Version.

Bei den Grundeinstellungen wird mir hingegen noch die alte angezeigt:

Ich vermute, in irgendeiner config-Datei des NCP hängt noch die alte PHP-Version drin.

Bislang hatte ich diesen Umstand ignoriert, da alles prima lief. php -v hat mir ja auch die korrekte Version - und nur die - angezeigt. Seit der letzten Fehlermeldung für das ncp-dist-upgrade sollte ich es aber doch mal fixen - weiß aber nicht wie.

Das letzte, was ich gemacht habe, war:

Natürlich immer mit der Version 8.3 anstatt 8.2.

Das lief ohne Probleme durch, hatte aber keine Auswirkung auf das oben beschriebene Problem. NCP zeigt immer noch PHP-Version 8.1 an.

Bin für alle Hinweise dankbar.

Beste Grüße

Ich würde hier erst einmal eine kleine Bestandsaufnahme machen, bevor man weiter Pakete entfernt oder Symlinks setzt.

Mir ist noch nicht ganz klar, welche Rolle die drei PHP-Versionen 8.1, 8.2 und 8.3 auf deinem System jeweils spielen. Außerdem ist wichtig: php -v zeigt nur die PHP-Version auf der Kommandozeile, also PHP-CLI. Das muss nicht zwingend dieselbe Version sein, die Apache beziehungsweise PHP-FPM für Nextcloud verwendet.

Da Nextcloud selbst offenbar PHP 8.3 anzeigt, NextcloudPi aber noch PHP 8.1 meldet, könnte es sein, dass Nextcloud korrekt läuft, NextcloudPi aber noch einen alten PHP-Zustand oder eine alte NCP-Konfigurationsverknüpfung sieht.

Kannst du bitte einmal diese Ausgaben posten?

dpkg -l | grep -E '^(ii|rc)\\s+php(8\\.1|8\\.2|8\\.3)'

systemctl status php8.1-fpm php8.2-fpm php8.3-fpm

ls -l /etc/php/8.\*/fpm/conf.d/90-ncp.ini

Hallo Cyberduck,

vielen Dank für deine schnelle Antwort.

Hier mal der Output der ersten zwei Zeilen:

Und hier von der letzten:

grafik

Bevor wir jetzt anfangen, die Regex-Shell-Syntax zu debuggen, führe bitte einfach die folgenden Kommandos aus und poste die Ausgabe:

dpkg -l | grep php8.1
dpkg -l | grep php8.2
dpkg -l | grep php8.3

Damit prüfen wir, ob neben PHP 8.3 noch eine andere Version installiert ist.

NextcloudPi wird nicht wirklich gut gepflegt im Vergleich zu NextCloud und hinkt daher immer deutlich hinterher. Ich habe viel Stress damit gehabt und das hat tierisch genervt. Bin dann auf DietPi gegangen und habe dort das „normale“ NextCloud mit einem Klick aus dem DietPi Repo installiert. DAS ist ein Unterschied! Es funktioniert viel besser und man ist immer aktuell mit NC und vor allem auch der Umgebung, Apache, PHP, Redis usw., was bei NC nicht unwichtig ist. Der Umstieg auf die Basis DietPi ist so gut das ich die Anleitung dahingehend umschreiben würde. Andererseits ist es mit DietPi so einfach das man eigentlich keine Anleitung mehr braucht.

https://dietpi.com/

Hier die Ausgabe, so wie sie sein sollte:

Nach allem, was wir bisher gesehen haben, hat NCP zumindest keinen naheliegenden objektiven Grund mehr, die laufende Umgebung als PHP 8.1 zu erkennen. Nextcloud selbst zeigt PHP 8.3, php8.3-fpm läuft, php8.1-fpm und php8.2-fpm existieren offenbar nicht, und in der Paketliste tauchen ebenfalls nur PHP-8.3-Pakete auf.

Eine Frage liegt mir allerdings schon die ganze Zeit auf der Zunge. Wurde der Wechsel der PHP-Version vollständig über die Updatefunktionen von NCP durchgeführt, oder wurden zwischendurch manuelle Schritte ausgeführt, beispielsweise PHP-Pakete installiert/deinstalliert, Apache-/FPM-Konfigurationen geändert oder eigenhändig Symlinks gesetzt?

Ich frage deshalb, weil NCP eine eigene Automations- und Konfigurationsschicht mitbringt. Wenn der erwartete NCP-Updatepfad verlassen wurde, kann Nextcloud zwar funktionieren, während NCP intern trotzdem einen inkonsistenten Zustand anzeigt.

Umgekehrt ist nach den bisherigen Ausgaben aber auch nicht ausgeschlossen, dass NCP beziehungsweise das betreffende Update-Skript selbst nicht sauber mit dem aktuellen Zustand umgeht. Dann wäre das Problem nicht die laufende PHP-Version, sondern dass NCP den Zustand falsch bewertet. Um das sauber zu unterscheiden, müsste man vermutlich tiefer in die NCP-Konfiguration beziehungsweise die NCP-Skripte einsteigen.

Nach der manuellen Installation mit php-updater habe ich ausschließlich die Update-Funktionen von NCP verwendet:

  • apt-get update
  • apt-get upgrade
  • apt-get dist-upgrade

Das Skript hat ordentlich gearbeitet, PHP 8.3 wurde korrekt installiert, Nextcloud ‚sieht‘ das auch,

aber ncp nicht. Sehr wahrscheinlich ist dieser Weg dann nicht zu empfehlen sondern alles ausschließlich über ncp zu erledigen.

Für mich war das ein Workaraound, da die damals aktuelle Version nicht gebootet hat (das image habe ich mehrmals auf die SD-Skarte geschrieben, immer mit demselben Ergebnis).

Momentan läuft das System ja, eine saubere Lösung hätte ich mittelfristig doch gerne.

Bislang erstelle ich regelmäßig ein Image der SD-Karte (spätestestens alle 2 Monate, immer vor Major-Releases von NC). So kann ich zur Not, falls eine Aktualisierung nicht sauber ist oder ich Murks baue, das Image der letzten funktionierenden Version aufspielen, Karte in den Pi und gut ist.

Ich spiele mit folgenden Gedanken:

  • Komplette Neuinstallation von NextcloudPi in der aktuellen Version auf einer neuen SD-Karte
  • oder alternativ Nextcloud All-in-One als Docker image auf einem leichten Linux auf einer neuen SD-Karte

Mit „neue“ SD-Karte meine ich schlicht eine separate Karte. Ich denke, das wäre in meinem Fall die schnellere und saubere Lösung.

Was ich in dem Zuge nicht weiß ist: angenommen, NextcloudPi in der aktuellen Version lässt sich ohne Probleme neu installieren und einrichten, alternativ NC AIO. Was passiert, wenn ich die Icybox anschließe, auf der natürlich schon Daten sind? Selbstverständlich habe ich mehrere Backups aller Daten.

Da ist auch noch ein Update auf Trixie (Debian Betriebssystem) vorhanden. Vielleicht sollte das Erstmal gemacht werden ( sudo ncp-dist-upgrade)?

Hallo Jodapalme,

das ist genau das Problem ncp-dist-upgrade will nicht ausführen, da für ncp PHP noch auf Version 8.1 ist …

Der Vollständigkeit halber, die relevanten Meldungen:

Nach Bestätigung kommt diese Meldung:

grafik

Dies bestätigt die Annahme von Cyberduck, dass NCP den PHP-Status falsch interpretiert.

Vor Ausführung wird ja schon gewarnt, dass manuelle Änderungen zu Problemen führen können …

Das hatte ich im ersten Post überlesen :roll_eyes:

Damit ist die Ursache zumindest scheinbar geklärt. Beim PHP-Wechsel wurde der NCP-interne Aktualisierungspfad verlassen. Nur weil Nextcloud PHP 8.3 erkennt und php8.3-fpm läuft, bedeutet das nicht automatisch, dass auch die NCP-eigene Zustandsverwaltung wieder konsistent ist. Das würde erklären, warum Nextcloud funktioniert, NCP aber noch einen falschen Zustand anzeigt.

Solange das bestehende System stabil läuft, würde ich nicht mehr viel daran herumdoktern. In deinem Fall klingt eine saubere Neuinstallation auf einer separaten SD-Karte vernünftig, weil das alte System unangetastet bleibt und du jederzeit zurück kannst.

Die Datenplatte einfach an eine neue NextcloudPi-Installation anzuschließen, ist keine vollständige Migration. Nextcloud besteht nämlich nicht nur aus den Dateien, sondern auch aus der Datenbank, den Benutzern, den Freigaben, den App-Zuständen, den Kalendern/Kontakten und weiteren Metadaten.

Wenn du die bestehende Instanz vollständig übernehmen willst, brauchst du einen sauberen Restore-/Migrationsweg aus Datenbank, Datenverzeichnis und config.php. Wenn du hingegen neu anfangen möchtest, kannst du die Dateien in die neue Instanz übernehmen. Dabei verlierst du je nach Vorgehen jedoch Freigaben, App-Zustände und andere Nextcloud-Metadaten.

Ich habe parallel das Thema im Nextcloud-Forum gepostet.

Wie vermutet hing noch irgendwo eine Info zur veralteten PHP-version:

grafik

Die Anpassung der Version auf „8.3“ in ncp.cfg brachte dann die Lösung.

Vielen Dank an alle für Eure Beiträge :folded_hands: