Heim >Datenbank >MySQL-Tutorial >Warum wird meine benutzerdefinierte Fehlermeldung nicht angezeigt, wenn mysqli_connect in PHP fehlschlägt?

Warum wird meine benutzerdefinierte Fehlermeldung nicht angezeigt, wenn mysqli_connect in PHP fehlschlägt?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-30 17:35:14512Durchsuche

Why Doesn't My Custom Error Message Show When mysqli_connect Fails in PHP?

Warum zeigt PHP keine benutzerdefinierte Fehlermeldung an, wenn mysqli_connect fehlschlägt?

In der Vergangenheit verwendete PHP die MySQL-Erweiterung, um eine Verbindung zu Datenbanken herzustellen, was eine manuelle Fehlerbehandlung erforderte . Mit der Einführung von mysqli werden Fehler jedoch automatisch ausgelöst, sodass manuelle Prüfungen wie if (!$conn) nicht mehr erforderlich sind.

In PHP 8.1 und höher löst mysqli Ausnahmen für Fehler aus. Daher wird die benutzerdefinierte Fehlermeldung in Ihrem Code nicht angezeigt.

So behandeln Sie Verbindungsfehler

Der empfohlene Ansatz besteht darin, einen Try-Catch-Block zur Behandlung von Datenbankverbindungsfehlern zu verwenden, anstatt sich darauf zu verlassen manuelle Prüfungen:

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error here
}

So verbergen Sie Fehlermeldungen vor Benutzern

Um Fehlermeldungen vor Benutzern auszublenden, setzen Sie display_errors auf 0 in php.ini oder mit ini_set():

ini_set('display_errors', 0);

So zeigen Sie benutzerfreundliche Fehlerseiten an

Verwenden Sie einen Fehlerhandler, um eine generische Fehlerseite anstelle der spezifischen Fehlermeldung anzuzeigen :

set_exception_handler(function ($e)
{
    // Log the error
    error_log($e);

    // Set HTTP status code to 500
    http_response_code(500);

    // Check display_errors setting
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>An internal server error has occurred. Please try again later.";
    }
});

So testen Sie Verbindungsanmeldeinformationen

Verwenden Sie einen separaten Verbindungstest mit try-catch, um Anmeldeinformationen für Installationsskripte oder Sicherungsszenarien zu testen:

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error
}

So verbergen Sie Verbindungsanmeldeinformationen

In PHP 8.2 und höher wird das Datenbankkennwort aus dem Stack-Trace ausgeblendet.

Das obige ist der detaillierte Inhalt vonWarum wird meine benutzerdefinierte Fehlermeldung nicht angezeigt, wenn mysqli_connect in PHP fehlschlägt?. 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