在嘗試建立資料庫連線時,您遇到了一個問題,即您定義的自訂錯誤訊息未被顯示連線失敗時顯示。您也在尋找一種從使用者的角度抑制錯誤訊息的方法。
從PHP 8.1 開始,mysqli 擴展現在會在出現以下情況時自動拋出異常:錯誤,消除了像早期版本的PHP 中那樣進行手動錯誤處理的需要。
自訂錯誤訊息(如您定義的錯誤訊息)不再建議用於錯誤處理。 PDO 和 mysqli 都能夠自動引發錯誤,就像其他 PHP 指令一樣。因此,像您嘗試對 if (!$conn) 段執行的那樣手動檢查錯誤已過時。
防止錯誤訊息到達用戶,您應該使用 display_errors 配置選項,可以將其設為 0 以抑制所有錯誤輸出。這可以在php.ini 檔案中配置,也可以直接在PHP 程式碼中配置:
ini_set('display_errors', 0);
建議向網站訪客提供使用者友善的錯誤頁面,而不是顯示神秘的錯誤訊息。這可以透過設定一個錯誤處理程序來實現,如下所示,它將捕獲所有不可恢復的錯誤:
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.";
}
});
如果您需要專門處理資料庫連接錯誤,您可以使用包裝在try-catch 區塊中的單獨連接測試腳本,與常規連接測試腳本分開連接代碼。
為了增強安全性,請將 PHP 版本更新到 8.2 或更高版本,這樣可以隱藏資料庫密碼,使其不會出現在堆疊追蹤中。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3