首頁 >後端開發 >php教程 >為什麼升級到 PHP 8.1 後 mysqli_connect 失敗時不顯示我的自訂錯誤訊息?

為什麼升級到 PHP 8.1 後 mysqli_connect 失敗時不顯示我的自訂錯誤訊息?

Patricia Arquette
Patricia Arquette原創
2024-10-26 20:38:02260瀏覽

Why Are My Custom Error Messages Not Displaying in mysqli_connect Failures After Upgrading to PHP 8.1?

調查mysqli_connect 失敗中隱藏的自訂錯誤訊息

在嘗試建立資料庫連線時,您遇到了一個問題,即您定義的自訂錯誤訊息未被連線失敗時顯示。您也在尋找一種方法來抑制使用者視圖中的錯誤訊息。

錯誤訊息的本質

從PHP 8.1 開始,mysqli 擴充現在會在出現以下情況時自動拋出異常:錯誤,消除了像早期版本的PHP 中那樣進行手動錯誤處理的需要。

錯誤抑制背後的基本原理

不再建議使用自訂錯誤訊息(如您定義的錯誤訊息)錯誤處理。 PDO 和 mysqli 都能夠自動引發錯誤,就像其他 PHP 指令一樣。因此,像您嘗試使用 if (!$conn) 段那樣手動檢查錯誤已經過時了。

避免向用戶暴露錯誤

防止錯誤訊息到達用戶,您應該使用 display_errors 配置選項,可以將其設為 0 以抑制所有錯誤輸出。這可以在php.ini 檔案中或直接在PHP 程式碼中配置:

<code class="php">ini_set('display_errors', 0);</code>

提供用戶友好的錯誤頁面

建議不要顯示神秘的錯誤訊息向網站訪客呈現用戶友善的錯誤頁面。這可以透過設定一個錯誤處理程序來實現,如下所示,它將捕獲所有不可恢復的錯誤:

<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>\nAn internal server error has been occurred.<br>\nPlease try again later.";
    }
});</code>

單獨處理資料庫連接錯誤

如果需要專門處理資料庫連接錯誤,您可以使用包含在try-catch 區塊中的單獨連接測試腳本,與常規連接程式碼分開。

保護連線憑證

為了增強安全性,請更新您的 PHP 版本到 8.2 或更高版本,這會掩蓋資料庫密碼出現在堆疊追蹤中。

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

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