Em uma tentativa de estabelecer uma conexão com o banco de dados, você encontrou um problema em que a mensagem de erro personalizada que você definiu não estava sendo exibido quando a conexão falhou. Você também está procurando um método para suprimir mensagens de erro da visão do usuário.
A partir do PHP 8.1, a extensão mysqli agora lança exceções automaticamente no caso de uma erro, eliminando a necessidade de tratamento manual de erros como era feito em versões anteriores do PHP.
Mensagens de erro personalizadas, como a que você definiu, não são mais recomendadas para tratamento de erros. Tanto o PDO quanto o mysqli têm a capacidade de gerar erros automaticamente, assim como qualquer outro comando PHP. Portanto, a verificação manual de erros, como você tentou fazer com o segmento if (!$conn), é obsoleta.
Para evitar que mensagens de erro cheguem ao usuário , você deve utilizar a opção de configuração display_errors, que pode ser definida como 0 para suprimir todas as saídas de erro. Isso pode ser configurado no arquivo php.ini ou diretamente no seu código PHP:
ini_set('display_errors', 0);
Em vez de exibir mensagens de erro enigmáticas, é aconselhável apresentar uma página de erro amigável aos visitantes do site. Isso pode ser conseguido configurando um manipulador de erros, como o mostrado abaixo, que capturará todos os erros irrecuperáveis:
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.";
}
});
Se precisar lidar especificamente com erros de conexão de banco de dados, você pode usar um script de teste de conexão separado, envolvido em um bloco try-catch, separado do seu script normal código de conexão.
Para maior segurança, atualize sua versão do PHP para 8.2 ou posterior, o que impede que as senhas do banco de dados apareçam no rastreamento de pilha.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3