"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi mes messages d'erreur personnalisés ne s'affichent-ils pas dans les échecs mysqli_connect après la mise à niveau vers PHP 8.1 ?

Pourquoi mes messages d'erreur personnalisés ne s'affichent-ils pas dans les échecs mysqli_connect après la mise à niveau vers PHP 8.1 ?

Publié le 2024-11-08
Parcourir:118

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

Enquête sur le message d'erreur personnalisé masqué dans les échecs de mysqli_connect

En tentant d'établir une connexion à la base de données, vous avez rencontré un problème où le message d'erreur personnalisé que vous avez défini n'était pas affiché lorsque la connexion a échoué. Vous recherchez également une méthode pour supprimer les messages d'erreur du point de vue de l'utilisateur.

La nature du message d'erreur

À partir de PHP 8.1, l'extension mysqli lève désormais automatiquement des exceptions en cas d'erreur. erreur, éliminant ainsi le besoin d'une gestion manuelle des erreurs comme cela se faisait dans les versions précédentes de PHP.

La justification de la suppression des erreurs

Messages d'erreur personnalisés, comme celui que vous définis, ne sont plus recommandés pour la gestion des erreurs. PDO et mysqli ont la capacité de générer automatiquement des erreurs, comme n'importe quelle autre commande PHP. Par conséquent, la vérification manuelle des erreurs, comme vous avez tenté de le faire avec le segment if (!$conn), est obsolète.

Éviter l'exposition des utilisateurs aux erreurs

Pour empêcher les messages d'erreur d'atteindre l'utilisateur , vous devez utiliser l'option de configuration display_errors, qui peut être définie sur 0 pour supprimer toutes les sorties d'erreur. Cela peut être configuré dans le fichier php.ini ou directement dans votre code PHP :

ini_set('display_errors', 0);

Fournir une page d'erreur conviviale

Au lieu d'afficher des messages d'erreur énigmatiques, il est conseillé de présenter une page d'erreur conviviale aux visiteurs du site. Ceci peut être réalisé en configurant un gestionnaire d'erreurs, tel que celui ci-dessous, qui détectera toutes les erreurs irrécupérables :

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.";
    }
});

Gestion séparée des erreurs de connexion à la base de données

Si vous devez gérer spécifiquement les erreurs de connexion à la base de données, vous pouvez utiliser un script de test de connexion distinct enveloppé dans un bloc try-catch, distinct de votre script habituel code de connexion.

Protection des informations d'identification de connexion

Pour une sécurité renforcée, mettez à jour votre version de PHP vers la version 8.2 ou ultérieure, ce qui empêche les mots de passe de base de données d'apparaître dans la pile. tracer.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3