理解問題:
在您的根據提供的程式碼,您嘗試使用 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中文網其他相關文章!