首頁  >  文章  >  資料庫  >  為什麼我的自訂 MySQLi 連線錯誤訊息在 PHP 8.1 中不顯示?

為什麼我的自訂 MySQLi 連線錯誤訊息在 PHP 8.1 中不顯示?

Susan Sarandon
Susan Sarandon原創
2024-11-26 11:56:10104瀏覽

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

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

理解問題:

在您的根據提供的程式碼,您嘗試使用 mysqli_connect 連接到資料庫,並在連接失敗時列印自訂錯誤訊息。但是,PHP 8.1 及更高版本以不同方式處理錯誤,引發異常而不需要手動處理。

隱藏的自訂錯誤訊息:

從PHP 8.1 開始,mysqli_connect 產生異常當發生錯誤時,這表示您的程式碼不再需要手動檢查連線狀態。此外,您應該避免向使用者顯示自訂錯誤訊息。相反,請使用 PHP 的錯誤處理機製或提供通用錯誤頁面。

顯示錯誤配置:

要防止 PHP 向使用者顯示錯誤訊息,請設定 'display_errors ' php.ini 或程式碼中的選項為0:

ini_set('display_errors', 0);

錯誤處理程序網站使用者:

對於使用者友善的錯誤頁面,請使用記錄錯誤、設定HTTP 500 狀態代碼並顯示一般錯誤訊息或重定向到錯誤頁面的錯誤處理程序。

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

單獨處理連線錯誤:

如果要處理特別是連線錯誤,例如測試使用者憑證,請在專用連線測試程式碼中使用try.. catch區塊:

try {
    $conn = mysqli_connect(...);
} catch (mysqli_sql_exception $e) {
    // Handle connection error
}

隱藏連線憑證:

PHP 8.2以後從堆疊追蹤中隱藏資料庫密碼以提高安全性。

以上是為什麼我的自訂 MySQLi 連線錯誤訊息在 PHP 8.1 中不顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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