Heim > Datenbank > MySQL-Tutorial > Warum werden in PHP 8.1 keine Fehlermeldungen zu meiner benutzerdefinierten MySQLi-Verbindung angezeigt?

Warum werden in PHP 8.1 keine Fehlermeldungen zu meiner benutzerdefinierten MySQLi-Verbindung angezeigt?

Susan Sarandon
Freigeben: 2024-11-26 11:56:10
Original
180 Leute haben es durchsucht

Why Aren't My Custom MySQLi Connection Error Messages Displaying in PHP 8.1 ?

Warum zeigt PHP meine benutzerdefinierte Fehlermeldung nicht an, wenn Mysqli_connect fehlschlägt?

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);
Nach dem Login kopieren

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.";
    }
});
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage