Maison  >  Article  >  développement back-end  >  Pourquoi mon message d'erreur PHP personnalisé n'apparaît-il pas lorsque mysqli_connect échoue ?

Pourquoi mon message d'erreur PHP personnalisé n'apparaît-il pas lorsque mysqli_connect échoue ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 14:51:30133parcourir

Why Doesn't My Custom PHP Error Message Appear When mysqli_connect Fails?

Pourquoi PHP n'affiche-t-il pas mon message d'erreur personnalisé lorsque mysqli_connect échoue ?

Comprendre le mécanisme de détection d'erreurs< ;/h3>

Dans le passé, l'extension mysql de PHP nécessitait une gestion manuelle des erreurs. Cependant, l'extension mysqli introduite dans PHP 8.1 déclenche désormais automatiquement des exceptions en cas d'erreurs, éliminant ainsi le besoin d'une détection manuelle des erreurs.

Confusion des messages d'erreur personnalisés

Votre le code inclut un bloc if ($ conn) qui tente d'afficher un message d'erreur personnalisé. Cette approche est dépassée. mysqli génère automatiquement des erreurs, qui doivent être traitées automatiquement.

Masquage des messages d'erreur des utilisateurs

Pour masquer les messages d'erreur des visiteurs du site, vous devez utiliser la configuration display_errors option. Le définir sur 0 empêchera PHP d’afficher des erreurs. Vous pouvez définir cette option dans php.ini ou dans le code PHP en utilisant ini_set('display_errors', 0).

Affichage d'une page d'erreur conviviale

Bien qu'il soit essentiel de masquer les erreurs système aux utilisateurs, vous souhaiterez peut-être afficher une page d'erreur conviviale. Ceci peut être réalisé en utilisant un gestionnaire d'erreurs tel que :

<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>
              An internal server error has occurred.<br>
              Please try again later.";
    }
});</code>

Ce gestionnaire enregistre l'erreur, définit un code d'état HTTP 500 et affiche un message d'erreur générique si display_errors est défini sur 0.

Gestion des erreurs de connexion

Dans certains scénarios, vous devrez peut-être gérer explicitement les erreurs de connexion. Cela peut être fait en utilisant un bloc try-catch. Toutefois, ce traitement doit être limité aux cas où des scénarios d'erreur spécifiques nécessitent des actions alternatives.

Masquage des informations sensibles

Si vous êtes préoccupé par l'apparition d'informations sensibles dans la trace de la pile, envisagez de passer à PHP 8.2 ou version ultérieure, qui masque les mots de passe de la base de données de 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!

Déclaration:
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