Heim >Backend-Entwicklung >PHP-Tutorial >Warum erscheint meine benutzerdefinierte PHP-Fehlermeldung nicht, wenn mysqli_connect fehlschlägt?
In der Vergangenheit erforderte die MySQL-Erweiterung von PHP eine manuelle Fehlerbehandlung. Allerdings löst die in PHP 8.1 eingeführte MySQLi-Erweiterung jetzt automatisch Ausnahmen aus, wenn Fehler auftreten, sodass keine manuelle Fehlererkennung mehr erforderlich ist.
Ihr Der Code enthält einen if-Block (!$conn), der versucht, eine benutzerdefinierte Fehlermeldung auszugeben. Dieser Ansatz ist veraltet. mysqli löst von Natur aus Fehler aus, die automatisch behandelt werden sollten.
Um Fehlermeldungen von Website-Besuchern auszublenden, sollten Sie die display_errors-Konfiguration verwenden Option. Wenn Sie den Wert auf 0 setzen, wird verhindert, dass PHP Fehler anzeigt. Sie können diese Option in php.ini oder im PHP-Code mit ini_set('display_errors', 0) festlegen.
Während es wichtig ist, Systemfehler vor Benutzern zu verbergen, möchten Sie möglicherweise eine benutzerfreundliche Fehlerseite anzeigen. Dies kann mit einem Fehlerhandler wie dem folgenden erreicht werden:
<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> An internal server error has occurred.<br> Please try again later."; } });</code>
Dieser Handler protokolliert den Fehler, legt einen HTTP 500-Statuscode fest und zeigt eine generische Fehlermeldung an, wenn display_errors auf 0 gesetzt ist.
In bestimmten Szenarien müssen Sie möglicherweise Verbindungsfehler explizit behandeln. Dies kann mithilfe eines Try-Catch-Blocks erfolgen. Eine solche Handhabung sollte jedoch auf Fälle beschränkt sein, in denen bestimmte Fehlerszenarien alternative Maßnahmen erfordern.
Wenn Sie Bedenken haben, dass vertrauliche Informationen angezeigt werden Wenn Sie den Stack-Trace nicht nutzen, sollten Sie ein Upgrade auf PHP 8.2 oder höher in Betracht ziehen, wodurch Datenbankkennwörter aus dem Stack-Trace ausgeblendet werden.
Das obige ist der detaillierte Inhalt vonWarum erscheint meine benutzerdefinierte PHP-Fehlermeldung nicht, wenn mysqli_connect fehlschlägt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!