Heim  >  Artikel  >  Backend-Entwicklung  >  Warum werden meine benutzerdefinierten Fehlermeldungen bei mysqli_connect-Fehlern nach dem Upgrade auf PHP 8.1 nicht angezeigt?

Warum werden meine benutzerdefinierten Fehlermeldungen bei mysqli_connect-Fehlern nach dem Upgrade auf PHP 8.1 nicht angezeigt?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 20:38:02193Durchsuche

Why Are My Custom Error Messages Not Displaying in mysqli_connect Failures After Upgrading to PHP 8.1?

Untersuchung der versteckten benutzerdefinierten Fehlermeldung bei mysqli_connect-Fehlern

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.

Die Art der Fehlermeldung

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.

Der Grund für die Fehlerunterdrückung

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.

Fehleranfälligkeit für Benutzer vermeiden

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>

Bereitstellen einer benutzerfreundlichen Fehlerseite

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>

Datenbankverbindungsfehler separat behandeln

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.

Verbindungsanmeldeinformationen schützen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn