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.
À 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.
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.
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>
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>
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.
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!