«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему мои пользовательские сообщения об ошибках не отображаются в ошибках mysqli_connect после обновления до PHP 8.1?

Почему мои пользовательские сообщения об ошибках не отображаются в ошибках mysqli_connect после обновления до PHP 8.1?

Опубликовано 8 ноября 2024 г.
Просматривать:284

Why Are My Custom Error Messages Not Displaying in mysqli_connect Failures After Upgrading to PHP 8.1?

Исследование скрытого пользовательского сообщения об ошибке в ошибках mysqli_connect

При попытке установить соединение с базой данных вы столкнулись с проблемой, из-за которой определенное вами пользовательское сообщение об ошибке не было отображается, когда соединение не удалось. Вы также ищете метод подавления сообщений об ошибках с точки зрения пользователя.

Природа сообщения об ошибке

Начиная с 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