在嘗試建立資料庫連線時,您遇到了一個問題,即您定義的自訂錯誤訊息未被連線失敗時顯示。您也在尋找一種方法來抑制使用者視圖中的錯誤訊息。
從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中文網其他相關文章!