Neulich habe ich den Webserver auf PHP8 bringen müssen. Nextcloud sollte dann schneller laufen. Die Version PHP74 war auch wirklich nicht mehr die Neueste.
Also habe ich mich entschlossen, PHP8.1 zu installieren. Nach dem PHP8 installiert war, habe ich gemerkt, dass zwar das Anmeldefenster von Nextcloud kam, aber wenn ich mich anmelden wollte, dann wurde das Browser-Fenster Weiß und nichts passiert mehr. Böd!
Ein Blick in das error.log der Cloud gab folgenden Hinweis.
2023/01/23 16:47:01 [error] 90172#101160: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error: Nesting level too deep - recursive dependency? in /home/www-root/nextcloud/lib/private/Log/ExceptionSerializer.php on line 215" while reading response header from upstream, client: xx.xxx.xxx.xx, server: nextcloud, request: "POST /login HTTP/2.0", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "nextcloud"
So, jetzt war Dr.Google gefragt. Nach einiger Recherche, war ich aber mit dem Ergebnis nicht zufrieden. Dort wurden folgende Tipps gegeben:
- Bestimmte Apps sollten deaktiviert werden, z.B. Circle. Das Blöde ist nur, dass ich Circle gar nicht verwende
- Ein anderer Tipp war, die entsprechenden Codezeile auszukommentierten, und …
HALT
Ich empfehle Jedem, der dies vor hat, sofort die Hände von der Tastatur zu nehmen und sich erst einmal von Links und Rechts abzuwatschen!!!
Nein, so etwas macht man nicht!
Ein guter Admin deaktiviert nicht Code in einer Applikation. Diesen Spaß hatte ich schon vor Jahren gemacht und dieser bringt nur Ärger, weil dieser sich später rächen wird und dann weiß man nicht mehr, was man in der Applikation geändert hat.
Bei FreeBSD und ich denke, dass es dies auch in anderen Distributionen gibt, gibt es 2 Versionen der php.ini. Eine für die Entwicklung (php.ini-development) und eine für den laufenden Betrieb (php.ini-production). Zu finden sind diese bei FreeBSD unter /usr/local/etc.
Ein Unterschied (es gibt da mehrere) dieser php.ini-Dateien ist folgender Eintrag:
; Allows to include or exclude arguments from stack traces generated for exceptions.
; In production, it is recommended to turn this setting on to prohibit the output
; of sensitive information in stack traces
; Default Value: Off
; Development Value: Off
; Production Value: On
zend.exception_ignore_args = Off
Sieht dieser Eintrag in der php.ini so aus, dann hat man die php.ini-development zur php.ini gemacht. Für einen Webserver, der an das Internet angeschlossen ist, ist diese Einstellung nicht zu empfehlen, da ein Besucher sich darüber auch Daten und Einstellungen könnte. Die php.ini-production wurde aus bestimmten Grund so eingerichtet.
Betrachtet man die php.ini-production, dann findet man dort folgenden Eintrag:
; Allows to include or exclude arguments from stack traces generated for exceptions.
; In production, it is recommended to turn this setting on to prohibit the output
; of sensitive information in stack traces
; Default Value: Off
; Development Value: Off
; Production Value: On
zend.exception_ignore_args = On
Meine Empfehlung ist, hier, falls nicht noch weitere Einträge in der php.ini geändert wurden, die php.ini mit der php.ini-production auszutauschen oder diesen Eintrag auf „On“ zu setzen.
Anschließend reicht es, wenn man der php-fpm neu startet.
Anschließend klappte es wieder mit der Nextcloud. Gott sei Dank.