Php-updater - a script to upgrade php in a safe way

The error I found was in /var/log/apache2/nc-error.log:

[Fri Nov 15 10:34:57.804525 2024] [proxy_fcgi:error] [pid 733707:tid 733718] [remote 46.142.78.93:64107] AH01071: Got error 'Access to the script '/var/www/nextcloud/apps/serverinfo/update
' has been denied (see security.limit_extensions)'

Do I need to do something on the parameter “security.limit_extensions” ?

cgi.fix_pathinfo defaults to 1 ↗, so if that is commented out it is the same as if it is set to 1
But normally it shouldn’t matter for nextcloud at all.

I’m terribly sorry, I’m not aware of this connection at all. The error comes from a script from the serverinfo app. Also, your Nextcloud version is too old and is no longer supported.
You can use the php-updater script to update your php version step by step to the version you need to update to a more recent Nextcloud (at least Nextcloud 28) ↗. Once you’ve bumped your Nextcloud version to a supported one, the error messages will most likely no longer appear.


Viel GlĂŒck,
ernolf

Thanks a lot. Since I am on php8.2 now, next step is to go to Nextcloud 27.1.11 


1 Like

Live saver!! Been struggling with upgrading php for I don’t know how long. After upgrading to NC30 couldn’t postpone longer to move to a higher php version but whatever I tried, whatever guide I followed, it always resulted in an Internal Server Error. Until using your script. Highly recommended to anyone struggling like me. Feeling confident now for future php upgrades. Thanks!

3 Likes

Hi @ernolf
erstmal Gratulation zur update Funktion (im script selber) 
 funktioniert super :+1:
Und sorry daß ich jetzt erst antworten kann, bin erst jetzt hochgestuft worden und darf mehr als 2 Fragen stellen .
Du hattest mir schon geholfen auf 8.3 upzudaten !
Habe danach per:

sudo do-release-upgrade

von ubuntu server 22.04.5 LTS auf 24.04.1 LTS upgrade gemacht
Nextcloud lÀuft noch prima nach dem update und es wird weiterhin PHP 8.3 in NC genutzt:

          [1] - php8.1
          [2] - php8.2
          [3] - php8.3
          [4] - php8.4
          [q] - do nothing, quit
 - Please make your choice:

Danach dachte ich mir die PHP 8.1 und 8.2 könnten ja gelöscht werden.
Klappt aber nicht mit:

sudo apt remove --purge php8.1

es kommt Meldung:

Paket »php8.1« ist nicht installiert, wird also auch nicht entfernt.

Ich weiß jetzt nicht ob das zu OT hier.
Aber vielleicht hÀttest mir einen Tipp zu meinen Fragen:
Hat das 24.04.1 LTS update evtl nur etwas verbogen ?
Könnte ich den Php-updater verwirren wenn ich manuell PHP 8.1 + 8.2 lösche ?
Oder ist im Php-updater bereits schon ein Löschbefehl integriert ?

Danke schon mal

Da hilft Dir jede Suchmaschine. Schau mal hier:

1 Like

Danke @rakekniven !
habe zwar gesucht, aber nicht nach Fehlern im Paketverwaltungssystem.
Werde ich mal probieren mit:

sudo apt purge php8.1\*
sudo apt purge php8.2\*

Muss aber erst ein clonezilla image ziehen.
Geht ja schnell.

Es hat funktioniert (auch der interne script-updater) , 8.1+8.2 sind weg:

 - Switch default php version to:
          [1] - php8.3
          [2] - php8.4
          [q] - do nothing, quit
 - Please make your choice:

und NC lÀuft auch noch :+1:
Super ist auch daß der php-updater jedesmal die installierten Module checkt.

Hi @JoergB2,

vielen Dank fĂŒr dein Feedback

Die syntax bei apt-get ist:

sudo apt-get purge '*php8.1*'

also wildcards mĂŒssen, zwischen einzelnen AnfĂŒhrungszeichen gegen Globbing geschĂŒtzt werden.

Den Asterisk davor, ist damit auch Pakete wie libapache2-mod-php8.1 mit abgedeckt sind.

Das “PAKET” “php8.1” ist ein Meta Paket. Das Skript bietet grundsĂ€tzlich an, Meta-Pakete zu entfernen, weil sie selber keine Software enthalten, sondern nur Paket-Gruppen davon abhĂ€ngig sind. Das ist ein Debian Typisches Feature mit dem ich mich nie wirklich habe anfreunden können, weil es sehr ungenau einfach Paket-Gruppen installiert und updatet, von der manche Pakete oft gar nicht benötigt werden.
Also die Meldung war genau richtig. Das “PAKET” php8.1 ist (war) tatsĂ€chlich gar nicht installiert.

Nein, du kannst das Skript damit nicht verwirren. Es wird nach Möglichkeit immer dynamisch vor und nach jedem Schritt nach den tatsÀchlich installierten und vorhandenen Pakete und Erweiterungen gesucht, also wenn ein Paket nicht mehr da ist, dann registriert das Skript das auch so und beurteilt bzw. berechnet die möglichen Schritte jeweils aus den Gegebenheiten.

Auch die Syntax geht, besser jedoch wie ich oben beschrieben habe oder gleich so, damit beide Versionen abgedeckt sind:

sudo apt-get purge '*php8.[12]*'

Ja, ich habe in den letzten Tagen enorm viel daran entwickelt, es soll quasi - so meine Vorstellung - aus jeder Situation heraus die Möglichkeiten berechnen und daraus die machbaren Konfigurationsschritte anbieten.
Es macht nÀmlich wenig sinn, ein php up zu daten, wenn dazu nicht die passenden Module in der richtigen Version im jeweiligen Server (nginx oder apache2) geladen sind.

Also es freut mich, dass es funktioniert.


Viel GlĂŒck,
ernolf

2 Likes