以前 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中文网其他相关文章!