Nach dem Umstieg auf PHP 8 kam es auf Seiten mit formatierten Codeblöcken zur Fehlermeldung
„Warning: Undefined array key "properties" in /…/plugins/serendipity_event_geshi/serendipity_event_geshi.php on line 153“
gefolgt von
„Warning: Trying to access array offset on value of type null in /…/plugins/serendipity_event_geshi/serendipity_event_geshi.php on line 153“.
Anscheinend kommt PHP 8 in Zeile 153 nicht mit dem Ausdruck $eventData['properties']['ep_disable_markup_' . $this->instance] zurecht. Wenn es den Schlüssel „properties“ nicht gibt, schlägt der Zugriff auf den Folgewert natürlich fehl.
Ich habe das jetzt soweit zurechtgefrickelt, dass ich diesen Ausdruck durch eine neue Variable „$edpdm“ ersetzt habe, der ich vor der Fallunterscheidung, in der der Fehler auftritt, den Wert null zuweise, wenn der Schlüssel nicht existiert:
$edpdm = $eventData['properties']['ep_disable_markup_' . $this->instance] ?? null;
Immerhin funktioniert das Plugin jetzt wieder, zeigt Code ordentlich syntaxgehighlightet an und wirft keine Fehler mehr aus. Da ich aber alles andere als ein PHP-Experte bin und nicht wirklich verstanden habe, was in der Zeile eigentlich geschieht, würde ich mich sehr freuen, wenn sich jemand, der davon mehr Ahnung hat, einmal des Plugins annehmen könnte.
Geshi und PHP 8
Re: Geshi und PHP 8
Hey marvo,
Da kommen zwei Sachen zusammen: PHP 8 hat vielen vorher validen Code invalid gemacht, er wirft jetzt Warnungen. Diese Warnungen versteckt Serendipity, aber das funktioniert nicht bei jedem Hoster.
Serendipity versteckt die Warnungen, wenn serendipity['production'] auf true gesetzt ist. Das passiert recht zu Beginn in der serendipity_config.inc.php, wenn Serendipity eine stabile Versionsnummer hat. Hast du die 2.4.0 installiert?
Momentane Theorie für wie dein Hoster bzw Server da das blockieren kann ist
in der php.ini. Die Konfiguration sollte für Produktivsysteme (=alles wo Fehlermeldungen stören) auf "off" stehen.
Was du machen kannst:
In der serendipity_config.inc.php, editiere Zeile 63ff von
zu
Wäre auch wirklich super wenn du das bei dir testen könntest (ohne deinen vorherigen Fix), dann können wir das für die nächste Version vielleicht generell ausrollen.
Da kommen zwei Sachen zusammen: PHP 8 hat vielen vorher validen Code invalid gemacht, er wirft jetzt Warnungen. Diese Warnungen versteckt Serendipity, aber das funktioniert nicht bei jedem Hoster.
Serendipity versteckt die Warnungen, wenn serendipity['production'] auf true gesetzt ist. Das passiert recht zu Beginn in der serendipity_config.inc.php, wenn Serendipity eine stabile Versionsnummer hat. Hast du die 2.4.0 installiert?
Momentane Theorie für wie dein Hoster bzw Server da das blockieren kann ist
Code: Select all
display_errors=on
Was du machen kannst:
In der serendipity_config.inc.php, editiere Zeile 63ff von
Code: Select all
if ($serendipity['production']) {
error_reporting(E_ALL & ~(E_WARNING|E_NOTICE|E_STRICT|E_DEPRECATED));
} else {
error_reporting(E_ALL & ~(E_NOTICE|E_STRICT|E_DEPRECATED));
}
Code: Select all
if ($serendipity['production']) {
error_reporting(E_ALL & ~(E_WARNING|E_NOTICE|E_STRICT|E_DEPRECATED));
@ini_set('display_errors', 'off');
} else {
error_reporting(E_ALL & ~(E_NOTICE|E_STRICT|E_DEPRECATED));
}
Re: Geshi und PHP 8
Mit der ini_set-Zeile läuft alles wie es soll. Herzlichen Dank!
Ionos setzt diese Einstellung in den Shared-Hosting-Paketen tatsächlich erst ab PHP 8.1 standardmäßig auf off. Bis PHP 8.0 ist error_reporting immer angeschaltet.
Beste Grüße
Martin
Ionos setzt diese Einstellung in den Shared-Hosting-Paketen tatsächlich erst ab PHP 8.1 standardmäßig auf off. Bis PHP 8.0 ist error_reporting immer angeschaltet.
Beste Grüße
Martin
Re: Geshi und PHP 8
Danke Martin. Habs direkt gepusht, https://github.com/s9y/Serendipity/comm ... 66504a250b, hoffentlich hilft es in der nächsten Version den anderen betroffenen :)