“Error establishing a database connection”, vous connaissez ? C’est le message par défaut en cas de soucis avec votre base de données MySQL.
Apprenons comment utiliser un fichier d’erreur sur-mesure avec WordPress.
Cet article fait suite à un mail que j’ai reçu dernièrement à propos d’un bug sur WP Channel. L’erreur n’était pas lié à MySQL mais cette personne m’a indiqué 2 liens très intéressants (en anglais) concernant la création de cette fameuse page d’erreur de base de données personnalisée. J’ai donc librement adapté le premier des 2 à ma façon, dont l’original est accessible sur Digging Into WordPress.
Intérêts d’une page d’erreur
Cette page est essentielle et je trouve dommage que personne ne m’en ait encore parlé… depuis le temps que j’utilise WordPress, je n’avais encore jamais lue d’informations à ce sujet !
- Ainsi, le premier avantage consiste à ne pas indiquer au monde entier que vous subissez un problème lié à votre base de données. La planète n’a pas besoin d’être au courant de ce type d’information et encore moins les hackers… un message personnalisé est donc nettement plus intéressant ;
- Deuxième point qui rejoint en partie le précédent. Cette page étant entièrement sur-mesure, vous pouvez donc saisir le texte de votre choix et même y ajouter des éléments visuels – un logo, par exemple. Toutefois, rappelons qu’il n’est pas conseillé de surcharger inutilement votre serveur pour le coup ;
- Troisième point important du point de vue de Google. Ce fichier PHP va retourner une erreur 503 dans l’en-tête indiquant un problème passager. Les robots de Google ne devrait donc pas indexer cette page et revenir plus tard indexer le reste de votre site ;
- Quatrième point capital à mes yeux, vous serez notifié par e-mail dès qu’une erreur surviendra. Très pratique pour surveiller l’apparition de ce type d’erreur et surtout pour n’en manquer aucune ;
Méthode de création détaillée
Une fois de plus, créez un tel fichier d’erreur avec WordPress n’a rien de compliqué !
A l’aide de votre client FTP favori, localisez le dossier /wp-content/. A l’intérieur de celui-ci, créez donc un nouveau fichier que vous nommerez db-error.php.
N.B : n’oubliez pas de modifier l’adresse mail !
Copiez / collez les lignes de code suivantes :
Il ne vous reste plus qu’à sauvegarder le fichier pour valider le tout. Bien entendu, vous pouvez modifier à votre guise les différents éléments et notamment les lignes de texte humoristiques…
Pour les plus téméraires, vous pouvez vous amuser à planter votre base de données en éditant par exemple le fichier wp-config.php situé à la racine de votre installation WordPress. Supprimez par exemple le mot de passe… et voyez le résultat sur votre blog !
Non seulement, vous verrez la page d’erreur mais vous serez également averti par e-mail d’un bug MySQL.
Cette technique est donc un moyen supplémentaire de maîtriser les messages d’erreurs qui peuvent survenir sur un site. Dans le même ordre d’idée, vous pouvez créez un modèle de page personnalisé pour les erreurs de type 404 !
Super article merci bien sa dépanne bien quand on à une base de donnée qui lâche !
merci beaucoup de cette astuce, je me cassais la tête à trouver une solution sans toucher au core de wordpress…
Perso, j’ai plusieurs autoblogs, qui enregistrent des doublons, et mon hébergeur, qui est très très moyen, a une limitation de connexions simultanées à la base, donc qd je lance mon script perso pour débusquer les doublons, j’ai un nombre incroyable d’erreurs.
En adaptant ce script, ça me permet de ne pas à recharger les pages manuellement…par contre mon système n’est pas fiable en cas de vrai plantage de la base
Merci pour le tuto!
Hyper simple à mettre en oeuvre, donc c’est fait sur mon blog 🙂
Fab
Merci pour ce très bon tutoriel !
Fonctionne à merveille, bon par contre ouille ouille ça flood la boite gmail heureusement qu’il groupe les conversations 🙂
J’ai simuler un crash 30 seconds plus de 60 mails j’imagine pas pendant 1H 🙂
Bref très bon boulot merci.
Merci à toi de ton commentaire !
Par contre, je pense que tu t’es trompé dans l’adresse e-mail… je viens de recevoir des dizaines de mails moi aussi… 😀
J’aurais une petite question, ne serait-il pas possible au lieu d’envoyé un message d’erreur par mail d’activer plutôt un script qui permettrait de faire un reboot automatiquement de la base de données tombé dans les choux ?
Je ne crois pas… à vrai dire je n’en ai aucune idée ! 😀
Merci tout de même pour la réponse 😉
Bonjour Aurélien,
Hier j’ai testé ton fichier et tout semblait fonctionner à merveille. J’ai crashé ma base en changeant le mot de passe sql dans mon fichier config.php et la page d’erreur s’est bien affichée correctement, j’ai bien reçu un mail pour m’en avertir.
Mais, gros problème. Ce matin, fanta78 m’a gentiment prévenue qu’en laissant un commentaire sur mon blog ou en voulant s’abonner à mon flux rss (feedburner ou le feed de WordPress), il tombait sur une page blanche d’erreur. J’ai refait la même tentative et confirme. Voici l’erreur générée :
Warning: Cannot modify header information – headers already sent by (output started at /homepages/0/d302159616/htdocs/lashon/wp-config.php:1) in /homepages/0/d302159616/htdocs/lashon/wp-comments-post.php on line 95
Warning: Cannot modify header information – headers already sent by (output started at /homepages/0/d302159616/htdocs/lashon/wp-config.php:1) in /homepages/0/d302159616/htdocs/lashon/wp-comments-post.php on line 96
Warning: Cannot modify header information – headers already sent by (output started at /homepages/0/d302159616/htdocs/lashon/wp-config.php:1) in /homepages/0/d302159616/htdocs/lashon/wp-comments-post.php on line 97
Warning: Cannot modify header information – headers already sent by (output started at /homepages/0/d302159616/htdocs/lashon/wp-config.php:1) in /homepages/0/d302159616/htdocs/lashon/wp-includes/pluggable.php on line 890
Je vais chercher plus d’infos là-dessus. En attendant, pour me sortir de là il a fallu faire les manips suivantes :
– Supprimer le fichier db-error.php
– Renvoyer mon config.php avec de nouvelles clés de sécurité (et en veillant à confirmer l’enregistrement en UTF8 sans bom):
https://api.wordpress.org/secret-key/1.1/salt/
sans quoi la suppression seule du fichier db-error ne suffisait pas.
Voilà pour mon retour.
Dommage…
Merci beaucoup pour ton retour d’expérience !
Je n’ai pas rencontré ce genre d’erreur dans mon cas… il faut dire que les situations sont nombreuses (thèmes et plugins installés, version de WordPress, etc.) mais je te serais reconnaissant de venir poster ici une éventuelle source d’information à ce propos ! 😎
Bien sûr Aurélien, pas le temps de me pencher là-dessus en ce moment mais dès que je le ferai je reviendrai t’informer si j’ai trouvé le problème et solution. Bonne continuation.
Salut!
Merci pour cette oh combien bonne idée.
Insérée en 5 minutes, testée, bien reçu le mail, j’espère cette fonction le plus souvent inutile que possible :)))
j’ai eu ce message Error establishing a database connection sur OVh ; j’ai installé un fichier :
qu’en penses tu?
merci
Je pense qu’il manque quelque chose après “fichier” dans ton commentaire, non ?
?php // fichier db-error.php
$host=$_SERVER[‘HTTP_HOST’];
$uri=urlencode($_SERVER[‘REQUEST_URI’]);
header(“Location: http://google.com/search?q=cache:$host$uri“);
exit();
?
il avait disparu…
Je ne sais trop quoi dire si ce n’est de copier / coller les lignes de code du tutoriel pour les adapter à ton site…
et hop installé sur gonzague.me 🙂 merci !
Pour les plus téméraires, vous pouvez vous amuser à planter votre base de données en éditant par exemple le fichier wp-config.php situé à la racine de votre installation WordPress. Supprimez par exemple le mot de passe… et voyez le résultat sur votre blog !
Sur wordpress 3.0.1 le fait de supprimer le mot de passe n’affiche pas la page db-error.php mais une page standard de wordpress:
Erreur lors de l’établissement de la connexion à la base de données
Autant pour moi, j’avais WP_DEBUG sur true, dans ce cas, db-error.php n’est pas affiché (normal)
Merci pour ce tuto très intéressant, je viens de tester il fonctionne a merveille, par contre oui faut faire attention au Mass Mail car en moins de 2 minutes de (faux) plantage pour le test j’ai reçu 30 mails donc j’imagine si la SQL tombe + de 30 minutes
Mais bon le fait de recevoir un mail est vraiment important et pratique
Merci donc !
Il faut avoir un bon hébergeur c’est certain ! 🙂
Diantre ! 20 messages et ton hébergeur te considère comme “mass mail”… ça laisse à désirer quand même ! 🙁
Sinon, merci pour ce retour d’expérience ! Tu peux enlever la ligne de mail dans le fichier db-error.php pour éviter que ce problème ne se reproduise.
Par contre, tu perdras cet aspect sympa…
hehe c’est ça quand on ne prend pas un payant !
Et bien sûr dès qu’ils ont réactivés mon compte (très rapidement ! je peux cracher sur la qualité du service général mais pas celle du service client) j’ai directement viré la ligne mail … à mon grand regret.
Je vais me trouver un site offre des services de surveillance gratuits ça sera mieux que rien !
Je sais que je suis “un peu” en retard mais… de mon côté j’ai ajouté une petite condition. Si le fichier “.errmail” n’existe pas, je créé le fichier et j’envoie un mail. Si le fichier existe, je passe cette étape. Comme ça j’envoie le mail une seule fois, ça évite de spammer ma boîte mail :-).
Avertissement !
Attention à ce que si un serveur Mysql dont vous vous servez tombe, cette page de donnée ne se transforme pas en outils “mass mail” au yeux de votre hébergeur …
Je dis juste ça comme ça puisque 000webhost chez qui je suis est dans ce cas, et je viens de me faire suspendre mon compte pour “mass mail” … j’avais 20 petits messages “database bug” dans ma boite indésirables !
Bref …
* croisez les doigts pour moi, je ne veux pas passer dans le bac à sable google alors que je viens de relancer mon site T_T *
Merci pour le tuyau, toujours aussi utile.
Attention cependant, le doctype utilisé dans l’exemple est celui du HTML5…
Penser donc à l’adapter à votre propre doctype.
Bonne remarque ! 😉
J’ai personnalisé ma page 404 aussi pour le coup ^^.
Merci 😛
Merci beaucoup !
Etant sur du 000webhost mutualisé et pas encore prêt à payer pour héberger mon site ce genre d’erreur je ne les connais que trop bien …
Bon allez je retourne personnaliser cette page.
Salut,
Pas mal, ça à l’air vraiment sympa (j’appliquerai cela ce soir sur mes wp).
Personnelement j’avais juste modifier le fichier (je sais plus son nom) qui contenait le “error etablishing blabla” et changé le message. Mais la ça me plait bien. Thx