devto 2026-06-15 원문 보기 ↗
Votre site WordPress ne répond plus. Écran blanc, message d'erreur, ou pire : des liens vers des pharmacies en ligne qui apparaissent dans Google à votre place. La première réaction est de paniquer et de cliquer partout. C'est exactement ce qu'il ne faut pas faire.
Je suis Sébastien, développeur WordPress freelance à Lyon. J'interviens régulièrement sur des sites cassés ou compromis, et dans 90 % des cas, le problème se règle avec une procédure méthodique. Voici celle que je suis, étape par étape.
Deux scénarios très différents se cachent derrière "mon site ne marche plus" :
Le réflexe de tout effacer pour "repartir propre" est la pire idée. Vous détruisez les preuves, et si c'est un piratage, vous risquez de garder la faille tout en perdant les traces qui permettent de la trouver.
Première action, toujours : faites une sauvegarde de l'état actuel, même cassé. Fichiers et base de données. Via votre hébergeur, FTP, ou en ligne de commande si vous y avez accès :
# Sauvegarde de la base de données
mysqldump -u UTILISATEUR -p NOM_DE_LA_BASE > backup-avant-intervention.sql
# Archive des fichiers
tar -czf backup-fichiers.tar.gz /chemin/vers/votre/site
Maintenant, on diagnostique.
Avant de plonger dans WordPress, éliminez le plus simple. Si c'est l'hébergeur qui est down, vous allez chercher un bug pour rien.
downforeveryoneorjustme.com pour voir si c'est vous ou tout le monde.
Si tout l'hébergement est par terre, contactez le support et passez votre tour. Sinon, on continue.Le message d'erreur est votre meilleur ami. Notez précisément ce que vous voyez :
| Symptôme | Piste la plus probable |
|---|---|
| Écran totalement blanc | Erreur PHP fatale, conflit d'extension ou mémoire |
| Erreur 500 | Fichier .htaccess, PHP, ou extension qui plante |
| "Erreur de connexion à la base de données" | Identifiants DB, serveur MySQL, table corrompue |
| Erreur 403 | Permissions de fichiers ou règle de sécurité |
| Site bloqué en "maintenance" | Fichier .maintenance laissé après une mise à jour ratée |
Ce dernier cas est le plus rapide à régler : connectez-vous en FTP, supprimez le fichier .maintenance à la racine du site, et c'est réglé.
Par défaut, WordPress masque les erreurs aux visiteurs. Pour voir ce qui se passe réellement, ouvrez le fichier wp-config.php (à la racine, via FTP) et ajoutez ces lignes avant la ligne /* That's all, stop editing! */ :
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // écrit les erreurs dans un fichier
define( 'WP_DEBUG_DISPLAY', false ); // ne les affiche pas aux visiteurs
Rechargez le site. Les erreurs s'écrivent maintenant dans wp-content/debug.log. Ouvrez-le : la dernière ligne pointe presque toujours vers le fichier ou l'extension fautive.
Pensez à remettre
WP_DEBUGsurfalseune fois le problème réglé. On ne laisse jamais le debug actif en production.
Si l'admin est inaccessible, vous ne pouvez pas désactiver les extensions depuis le tableau de bord. Passez par le FTP.
Renommez le dossier complet des extensions :
wp-content/plugins → wp-content/plugins-off
Votre site se recharge sans aucune extension. S'il revient à la vie, c'est une extension le coupable. Renommez le dossier à l'identique (plugins), puis réactivez les extensions une par une dans l'admin jusqu'à retrouver celle qui casse tout.
Même logique pour le thème. Renommez le dossier de votre thème actif dans wp-content/themes/. WordPress bascule automatiquement sur un thème par défaut (Twenty Twenty-Four ou similaire). Si le site repart, le problème vient de votre thème, souvent du fichier functions.php.
Ce message a trois causes classiques :
wp-config.php (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST). Vérifiez-les auprès de votre hébergeur, surtout après une migration.wp-config.php :
define( 'WP_ALLOW_REPAIR', true );
Puis visitez votre-site.fr/wp-admin/maint/repair.php, lancez la réparation, et retirez la ligne aussitôt après (sinon n'importe qui peut accéder à cet outil).
L'écran blanc vient parfois d'une limite mémoire trop basse, surtout sur les sites un peu lourds. Augmentez-la dans wp-config.php :
define( 'WP_MEMORY_LIMIT', '256M' );
Si ça ne suffit pas, le réglage se fait au niveau de l'hébergement (php.ini ou panneau de l'hébergeur).
Ici, la logique change. On ne cherche plus à "réparer", on cherche à nettoyer et sécuriser. Et la règle d'or : tant que vous n'avez pas trouvé par où c'est entré, le site se fera repirater.
Mettez le site en mode maintenance (HTTP 503) pour stopper la propagation et éviter que vos visiteurs soient infectés ou redirigés pendant l'intervention. Si l'attaque est grave, demandez à votre hébergeur de couper l'accès public temporairement.
Installez un scanner reconnu (depuis l'admin, ou en FTP si l'admin est bloqué) :
Si vous avez un accès SSH, c'est l'outil le plus efficace. Listez tous les fichiers PHP modifiés ces 7 derniers jours :
find . -type f -name "*.php" -mtime -7 -ls
Et repérez les motifs typiques du code malveillant (code obfusqué, exécution déguisée) :
grep -rEl "eval\(|base64_decode\(|gzinflate\(|str_rot13\(" wp-content/
Ces fonctions ont parfois des usages légitimes, mais combinées et planquées dans wp-content/uploads/, elles sont presque toujours le signe d'une porte dérobée.
N'essayez pas de "nettoyer" les fichiers du cœur de WordPress un par un. Remplacez-les en bloc par les versions officielles. Avec WP-CLI :
# Vérifie quels fichiers du cœur ont été altérés
wp core verify-checksums
# Réinstalle le cœur proprement, sans toucher à vos contenus
wp core download --force --skip-content
Faites pareil pour vos extensions et thèmes : réinstallez-les depuis les sources officielles plutôt que de tenter de les désinfecter.
Trois actions non négociables :
wp_users directement, certains pirates créent des admins invisibles dans l'interface.https://api.wordpress.org/secret-key/1.1/salt/ et remplacez le bloc correspondant dans wp-config.php. Ça déconnecte toutes les sessions actives, y compris celle du pirate.Le code malveillant ne vit pas que dans les fichiers. Inspectez la table wp_options (lignes siteurl, home, scripts injectés), les articles et pages contenant du JavaScript suspect, et les entrées de spam. Un plugin comme Wordfence repère une partie de ces injections, mais une vérification manuelle reste souvent nécessaire.
Si Google a blacklisté votre site, la dernière étape est de demander un réexamen via la Google Search Console, dans la section Sécurité et actions manuelles. À ne faire qu'après un nettoyage complet : si la moindre trace subsiste, Google maintiendra l'avertissement plus longtemps. Le centre de recherche Google propose un guide officiel dédié aux sites piratés, à lire avant la demande.
Vous pouvez gérer beaucoup de choses seul avec cette procédure. Mais certains signaux indiquent qu'il vaut mieux ne pas insister :
J'interviens sur ce type de situation, en dépannage ponctuel comme en suivi régulier. Si vous êtes face à un site cassé ou compromis :
La meilleure procédure de diagnostic reste celle qu'on n'a jamais à utiliser. La plupart des pannes et piratages que je traite auraient été évités par quelques bons réflexes :
Post not found or has been removed.
Et vous, quel a été votre pire incident WordPress ? Racontez en commentaire, c'est toujours instructif de comparer les diagnostics.
Sébastien, développeur WordPress freelance à Lyon. J'aide les TPE et PME à construire, optimiser et maintenir des sites fiables. En savoir plus sur lyode.fr.