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 ?

Patricia Arquette
Libérer: 2024-10-26 20:38:02
original
192 Les gens l'ont consulté

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 de problème. 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

Les messages d'erreur personnalisés, comme celui que vous avez défini, ne sont plus recommandés pour 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 erreurs aux utilisateurs

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. Ceci peut être configuré dans le fichier php.ini ou directement dans votre code PHP :

<code class="php">ini_set('display_errors', 0);</code>
Copier après la connexion

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 :

<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>
Copier après la connexion

Gérer séparément les erreurs de connexion à la base de données

Si vous devez gérer spécifiquement 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 code de connexion habituel.

Protéger les informations d'identification de connexion

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!