以前 PHP 使用 MySQL 擴充連接資料庫,需要手動處理錯誤。然而,隨著 mysqli 的引入,錯誤會自動拋出,不再需要像 if (!$conn) 這樣的手動檢查。
在 PHP 8.1 及更高版本中,mysqli 會拋出錯誤異常。因此,程式碼中的自訂錯誤訊息不會顯示。
建議的方法是使用try-catch 區塊來處理資料庫連線錯誤,而不是依賴手動檢查:
try { $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName); } catch (Exception $e) { // Handle the error here }
要隱藏使用者的錯誤訊息,請設定在php.ini 中將display_errors 設定為 0或使用ini_set():
ini_set('display_errors', 0);
使用錯誤處理程序顯示通用錯誤頁面而不是特定的錯誤頁面錯誤訊息:
set_exception_handler(function ($e) { // Log the error error_log($e); // Set HTTP status code to 500 http_response_code(500); // Check display_errors setting if (ini_get('display_errors')) { echo $e; } else { echo "<h1>500 Internal Server Error</h1>An internal server error has occurred. Please try again later."; } });
使用使用try-catch進行單獨的連線測試,以測試安裝腳本或備份場景的憑證:
try { $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName); } catch (Exception $e) { // Handle the error }
在PHP 8.2 及更高版本中,資料庫密碼對使用者隱藏堆疊跟踪。
以上是當 PHP 中 mysqli_connect 失敗時,為什麼我的自訂錯誤訊息不顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!