首頁 >資料庫 >mysql教程 >當 PHP 中 mysqli_connect 失敗時,為什麼我的自訂錯誤訊息不顯示?

當 PHP 中 mysqli_connect 失敗時,為什麼我的自訂錯誤訊息不顯示?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-30 17:35:14508瀏覽

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

為什麼 mysqli_connect 失敗時 PHP 不顯示自訂錯誤訊息?

以前 PHP 使用 MySQL 擴充連接資料庫,需要手動處理錯誤。然而,隨著 mysqli 的引入,錯誤會自動拋出,不再需要像 if (!$conn) 這樣的手動檢查。

在 PHP 8.1 及更高版本中,mysqli 會拋出錯誤異常。因此,程式碼中的自訂錯誤訊息不會顯示。

如何處理連線錯誤

建議的方法是使用try-catch 區塊來處理資料庫連線錯誤,而不是依賴手動檢查:

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

如何隱藏用戶的錯誤訊息

要隱藏使用者的錯誤訊息,請設定在php.ini 中將display_errors 設定為 0或使用ini_set():

ini_set('display_errors', 0);

如何顯示使用者友善的錯誤頁面

使用錯誤處理程序顯示通用錯誤頁面而不是特定的錯誤頁面錯誤訊息:

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.";
    }
});

如何測試連線憑證

使用使用try-catch進行單獨的連線測試,以測試安裝腳本或備份場景的憑證:

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

如何隱藏連線憑證

在PHP 8.2 及更高版本中,資料庫密碼對使用者隱藏堆疊跟踪。

以上是當 PHP 中 mysqli_connect 失敗時,為什麼我的自訂錯誤訊息不顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn