L'erreur HTTP 500 (Internal Server Error) est l'erreur la plus angoissante en WordPress : elle ne dit rien sur ce qui ne va pas. Le navigateur affiche juste "Le serveur a rencontré une erreur" et votre site est totalement inaccessible. Dans 90 % des cas, la cause est identifiable en 5 minutes avec la bonne méthode. Ce guide passe en revue les 7 causes les plus fréquentes, par ordre de probabilité, avec leur solution exacte.
Notre équipe intervient sous 24h ouvrées. Diagnostic et correction garantis 30 jours.
L'erreur HTTP 500, ou Internal Server Error, signifie que le serveur web (Apache, Nginx) a tenté d'exécuter votre site WordPress mais qu'une erreur PHP fatale est survenue. Contrairement à un 404 (page non trouvée) ou un 403 (accès refusé), le serveur est bien fonctionnel — c'est le code PHP de WordPress qui plante.
La particularité du 500 est qu'il masque la vraie cause pour des raisons de sécurité. Le serveur refuse d'afficher au visiteur le détail technique (qui pourrait être exploité par un attaquant) et renvoie ce message générique.
error_log du serveur (côté hébergeur). Y accéder est la première étape de tout diagnostic sérieux.Avant de tester des solutions au hasard, activez le mode debug qui transformera votre erreur 500 muette en message explicite. Modifiez le fichier wp-config.php à la racine du site (via FTP / SFTP ou gestionnaire de fichiers de l'hébergeur).
Cherchez la ligne define('WP_DEBUG', false); et remplacez-la par :
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
Rechargez ensuite la page qui affiche le 500. Une trace d'erreur est désormais écrite dans wp-content/debug.log. Ce fichier vous indiquera précisément la cause :
PHP Fatal error: Allowed memory size exhausted → manque de mémoire (cas 1)PHP Fatal error: Call to undefined function... → conflit plugin / thème (cas 2)PHP Parse error: syntax error → fichier corrompu ou édition manuelle ratée (cas 3)Error establishing a database connection → problème base de données (cas 4)WP_DEBUG après diagnostic. Le laisser activé en production expose des chemins de fichiers utiles à un attaquant.Une agence immobilière me contacte un lundi matin : leur site (10 000 visites/jour) est en 500 depuis dimanche soir, après une mise à jour automatique du plugin Yoast SEO Premium. Aucun accès admin possible.
Diagnostic immédiat via SSH : tail -50 /var/log/apache2/error.log révèle "PHP Fatal error: Class WPSEO_Helper not found". Conflit entre la version Premium 22.x et l'extension Local SEO 5.x non encore compatible.
Solution : SSH + désactivation manuelle des 2 plugins via wp plugin deactivate (WP-CLI), accès admin restauré, downgrade Yoast vers la version stable précédente. Temps total : 22 minutes. Coût client : forfait standard 299 €.
WordPress et ses plugins peuvent rapidement saturer la limite mémoire PHP par défaut (souvent 64M ou 128M). Sur les sites avec WooCommerce, Elementor ou des plugins SEO complexes, la mémoire monte fréquemment à 256M voire 512M.
Ajoutez dans wp-config.php, juste avant la ligne That's all, stop editing! :
define('WP_MEMORY_LIMIT', '512M');
define('WP_MAX_MEMORY_LIMIT', '512M');
Rechargez le site. Si le 500 disparaît, la cause était bien la mémoire. Si l'erreur persiste, votre hébergeur impose probablement une limite côté serveur — il faut alors la modifier dans .htaccess :
php_value memory_limit 512M
Ou dans un fichier php.ini personnalisé selon votre hébergeur.
Une fois le site rétabli, installez Query Monitor (gratuit) qui affiche la consommation mémoire de chaque plugin en bas de page admin. Désactivez puis réactivez chaque plugin un par un en surveillant l'évolution. Vous identifierez le coupable en quelques minutes.
| Cause | Fréquence | Temps moyen résolution | Symptôme typique |
|---|---|---|---|
| Mémoire PHP épuisée | 35 % | 15 min | Erreur uniquement sur pages lourdes (admin, e-commerce) |
| Conflit plugin / thème | 25 % | 30-45 min | Apparition immédiate après une mise à jour |
| .htaccess corrompu | 15 % | 5 min | Toutes les pages en 500, racine du site incluse |
| Base de données | 10 % | 20-60 min | Message "Error establishing a database connection" |
| Permissions fichiers | 7 % | 5 min | Après transfert FTP ou migration |
| Version PHP incompatible | 5 % | 10 min | Erreur après changement PHP via panneau hébergeur |
| Fichiers core corrompus | 3 % | 15 min | Après update WordPress interrompue |
Un plugin obsolète, un conflit entre 2 plugins, ou un thème mal codé peut déclencher une erreur PHP fatale. Cas typique : après une mise à jour, le site tombe en 500.
wp-content/plugins/ en plugins_OFF. Si le site revient → c'est un plugin.Si la désactivation de tous les plugins ne suffit pas, basculez sur un thème par défaut (Twenty Twenty-Four) en renommant le dossier de votre thème actif dans wp-content/themes/. WordPress retombe automatiquement sur un thème par défaut.
Le fichier .htaccess à la racine contient les règles de réécriture URL de WordPress. Une corruption (modification manuelle ratée, plugin de cache buggé, mise à jour interrompue) le rend illisible par Apache → erreur 500.
.htaccess en .htaccess.old# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{{REQUEST_FILENAME}} !-f
RewriteCond %{{REQUEST_FILENAME}} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Si le message exact est "Error establishing a database connection", ce n'est techniquement pas un 500 mais souvent rangé dans la même catégorie. La base MySQL ne répond plus.
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST. L'hébergeur a-t-il modifié quelque chose ?define('WP_ALLOW_REPAIR', true);
Puis allez sur votre-site.fr/wp-admin/maint/repair.phpDes permissions trop restrictives (ou trop ouvertes) empêchent Apache de lire les fichiers PHP. Standards corrects :
Via SSH :
find . -type d -exec chmod 755 {{}} \;
find . -type f -exec chmod 644 {{}} \;
WordPress 6.4+ requiert PHP 7.4 minimum (recommandé 8.1+). Si votre hébergeur tourne encore sur PHP 7.0 ou 7.2, certains plugins modernes plantent. Changez la version PHP dans le panneau hébergeur.
À l'inverse, un PHP trop récent (8.3) peut casser un thème ancien. Tester de revenir en 8.1 si rien d'autre ne fonctionne.
Mise à jour interrompue, transfert FTP raté : les fichiers core sont incomplets. Solution :
/wp-admin/ et /wp-includes/ intégralementwp-config.php et le dossier wp-content/Le client signale des erreurs 500 aléatoires sur sa boutique WooCommerce, en pic vers 14h-15h. WP Admin accessible, frontend instable selon les pages.
Le piège classique : ce n'était pas un bug du code mais un dépassement de la memory_limit PHP à 256M lors du traitement de variations produits complexes. Le serveur tuait le process PHP pendant les pics d'affluence.
Solution : passage à 768M en mémoire, optimisation de la requête de variations, mise en place de Redis Object Cache. Les 500 ont disparu. Au-delà de cette intervention, j'ai conseillé un upgrade serveur pour Black Friday.
Notre équipe française réalise diagnostic et correction sous 24h ouvrées, avec garantie satisfait ou remboursé 30 jours.
Commander une intervention — 299€