Hallo zusammen,
ich nutze Admidio in der Version 5.0.6 auf einem Server mit PHP 8.3.30 und bin auf einen kritischen Fehler gestoßen. Wenn der E-Mail-Versand (z. B. beim Speichern einer neuen Veranstaltung) fehlschlägt, stürzt das gesamte Skript mit einem Fatal Error ab, anstatt eine reguläre Fehlermeldung anzuzeigen.
Fehlermeldung:
Exception::__construct(): Argument #2 ($code) must be of type int, array given in /.../src/Infrastructure/Email.php on line 830
Analyse:
In der Datei src/Infrastructure/Email.php wird in Zeile 830 versucht, eine Exception zu werfen, wenn der Mailversand nicht erfolgreich war:
PHP
throw new \Admidio\Infrastructure\Exception('SYS_EMAIL_NOT_SEND', array($gCurrentOrganization->getValue('org_email_administrator'), $returnCode));
Das Problem ist, dass die Exception-Klasse unter PHP 8 als zweiten Parameter zwingend einen Integer erwartet. Admidio übergibt hier jedoch ein Array, welches die Webmaster-E-Mail und den eigentlichen Fehlercode enthält. Dies führt zum sofortigen Abbruch (Error 500/503) und verhindert zudem das Speichern der Veranstaltung in der Datenbank (Rollback der Transaktion).
Workaround / Fix:
Ich konnte das Problem vorerst beheben, indem ich den zweiten Parameter explizit zu einem Integer umgewandelt habe:
PHP
throw new \Admidio\Infrastructure\Exception('SYS_EMAIL_NOT_SEND', (int)$returnCode);
(Hinweis: Hierbei gehen allerdings die Parameter für die Sprachdatei verloren, was zu Platzhaltern wie #VAR1# führt, aber den Absturz verhindert.)
Desweiteren dem E-Mailversand con SMTP auf PHP() umgestellt habe.
Es wäre toll, wenn dies in einer zukünftigen Version PHP-8-konform gelöst werden könnte, sodass die Exception das Array korrekt verarbeitet oder die Sprachparameter anders übergeben werden.
System-Umgebung:
Admidio-Version: 5.0.6
PHP-Version: 8.x
Webserver: Apache/Nginx (Plesk Umgebung)
Betroffenes Modul: Veranstaltungen (events_function.php)
Vielen Dank
Manu
PHP 8 Fatal Error (Type Error) in Email.php bei fehlgeschlagenem SMTP-Versand (Version 5.0.6)
-
muellermanu
- Beiträge: 122
- Registriert: 27. Feb 2009, 00:02
- Wohnort: Schönau a.d. Brend
- Kontaktdaten: