在尝试建立数据库连接时,您遇到了一个问题,即您定义的自定义错误消息未被连接失败时显示。您也在寻找一种方法来抑制用户视图中的错误消息。
从 PHP 8.1 开始,mysqli 扩展现在会在出现以下情况时自动抛出异常:错误,消除了像早期版本的 PHP 中那样进行手动错误处理的需要。
不再建议使用自定义错误消息(如您定义的错误消息)错误处理。 PDO 和 mysqli 都能够自动引发错误,就像任何其他 PHP 命令一样。因此,像您尝试使用 if (!$conn) 段那样手动检查错误已经过时了。
防止错误消息到达用户,您应该使用 display_errors 配置选项,可以将其设置为 0 以抑制所有错误输出。这可以在 php.ini 文件中或直接在 PHP 代码中配置:
<code class="php">ini_set('display_errors', 0);</code>
建议不要显示神秘的错误消息向网站访问者呈现用户友好的错误页面。这可以通过设置一个错误处理程序来实现,如下所示,它将捕获所有不可恢复的错误:
<code class="php">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."; } });</code>
如果需要专门处理数据库连接错误,您可以使用包含在 try-catch 块中的单独连接测试脚本,与常规连接代码分开。
为了增强安全性,请更新您的 PHP 版本到 8.2 或更高版本,这会掩盖数据库密码出现在堆栈跟踪中。
以上是为什么升级到 PHP 8.1 后 mysqli_connect 失败时不显示我的自定义错误消息?的详细内容。更多信息请关注PHP中文网其他相关文章!