Heim >Backend-Entwicklung >PHP-Tutorial >Warum werden meine benutzerdefinierten Fehlermeldungen bei mysqli_connect-Fehlern nach dem Upgrade auf PHP 8.1 nicht angezeigt?
Beim Versuch, eine Datenbankverbindung herzustellen, ist ein Problem aufgetreten, bei dem die von Ihnen definierte benutzerdefinierte Fehlermeldung nicht angezeigt wurde wird angezeigt, wenn die Verbindung fehlschlägt. Sie suchen auch nach einer Methode, um Fehlermeldungen aus der Sicht des Benutzers zu unterdrücken.
Ab PHP 8.1 löst die MySQLi-Erweiterung jetzt automatisch Ausnahmen aus, wenn eine Fehlermeldung auftritt Fehler, wodurch die Notwendigkeit einer manuellen Fehlerbehandlung entfällt, wie dies in früheren PHP-Versionen der Fall war.
Benutzerdefinierte Fehlermeldungen, wie die von Ihnen definierte, werden nicht mehr empfohlen Fehlerbehandlung. Sowohl PDO als auch mysqli können wie jeder andere PHP-Befehl automatisch Fehler auslösen. Daher ist die manuelle Fehlersuche, wie Sie es mit dem if-Segment (!$conn) versucht haben, überflüssig.
Um zu verhindern, dass Fehlermeldungen den Benutzer erreichen , sollten Sie die Konfigurationsoption display_errors verwenden, die auf 0 gesetzt werden kann, um alle Fehlerausgaben zu unterdrücken. Dies kann in der php.ini-Datei oder direkt in Ihrem PHP-Code konfiguriert werden:
<code class="php">ini_set('display_errors', 0);</code>
Anstatt kryptische Fehlermeldungen anzuzeigen, ist es ratsam, dies zu tun Präsentieren Sie den Website-Besuchern eine benutzerfreundliche Fehlerseite. Dies kann erreicht werden, indem Sie einen Fehlerhandler wie den folgenden einrichten, der alle nicht behebbaren Fehler abfängt:
<code class="php">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>\nAn internal server error has been occurred.<br>\nPlease try again later."; } });</code>
Wenn Sie sie speziell behandeln müssen Bei Datenbankverbindungsfehlern können Sie ein separates Verbindungstestskript verwenden, das in einen Try-Catch-Block eingebettet ist und von Ihrem regulären Verbindungscode getrennt ist.
Aktualisieren Sie für mehr Sicherheit Ihre PHP-Version auf 8.2 oder höher, wodurch verhindert wird, dass Datenbankkennwörter im Stacktrace angezeigt werden.
Das obige ist der detaillierte Inhalt vonWarum werden meine benutzerdefinierten Fehlermeldungen bei mysqli_connect-Fehlern nach dem Upgrade auf PHP 8.1 nicht angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!