首页 >数据库 >mysql教程 >当 PHP 中 mysqli_connect 失败时,为什么我的自定义错误消息不显示?

当 PHP 中 mysqli_connect 失败时,为什么我的自定义错误消息不显示?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-30 17:35:14546浏览

Why Doesn't My Custom Error Message Show When mysqli_connect Fails in PHP?

为什么 mysqli_connect 失败时 PHP 不显示自定义错误消息?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn