Das Problem verstehen:
In Ihrem Mit dem bereitgestellten Code versuchen Sie, mit mysqli_connect eine Verbindung zu einer Datenbank herzustellen und geben eine benutzerdefinierte Fehlermeldung aus, falls die Verbindung fehlschlägt. Allerdings behandeln PHP 8.1 und höher Fehler anders und lösen Ausnahmen aus, anstatt eine manuelle Behandlung zu erfordern.
Versteckte benutzerdefinierte Fehlermeldung:
Ab PHP 8.1 generiert mysqli_connect eine Ausnahme Wenn ein Fehler auftritt, muss Ihr Code den Verbindungsstatus nicht mehr manuell überprüfen. Darüber hinaus sollten Sie vermeiden, Benutzern benutzerdefinierte Fehlermeldungen anzuzeigen. Verwenden Sie stattdessen die Fehlerbehandlungsmechanismen von PHP oder stellen Sie eine generische Fehlerseite bereit.
Konfiguration von Anzeigefehlern:
Um zu verhindern, dass PHP Benutzern Fehlermeldungen anzeigt, legen Sie „display_errors '-Option in php.ini oder Ihrem Code auf 0:
ini_set('display_errors', 0);
Error Handler for Site Benutzer:
Für eine benutzerfreundliche Fehlerseite verwenden Sie einen Fehlerhandler, der den Fehler protokolliert, einen HTTP 500-Statuscode festlegt und eine allgemeine Fehlermeldung anzeigt oder zu einer Fehlerseite weiterleitet.
set_exception_handler(function ($e) { error_log($e); http_response_code(500); if (ini_get('display_errors')) { echo $e; } else { echo "<h1>500 Internal Server Error</h1> An internal server error has been occurred.<br> Please try again later."; } });
Verbindungsfehler separat behandeln:
Wenn Sie Verbindungsfehler gezielt behandeln möchten, z Verwenden Sie zum Testen der Benutzeranmeldeinformationen try..catch-Blöcke in einem dedizierten Verbindungstestcode:
try { $conn = mysqli_connect(...); } catch (mysqli_sql_exception $e) { // Handle connection error }
Verbindungsanmeldeinformationen ausblenden:
Ab PHP 8.2 wird das Datenbankkennwort ausgeblendet von Stack-Traces für mehr Sicherheit.
Das obige ist der detaillierte Inhalt vonWarum werden in PHP 8.1 keine Fehlermeldungen zu meiner benutzerdefinierten MySQLi-Verbindung angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!