在尝试建立数据库连接时,您遇到了一个问题,即您定义的自定义错误消息未被显示连接失败时显示。您也在寻找一种从用户的角度抑制错误消息的方法。
从 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