Erreur 500 Internal Server Error : trouver la cause dans les logs et remettre le site en ligne
· 5 min de lecture
Ce que signifie l'erreur
Une erreur 500 est la réponse d'un serveur qui a reçu la requête, a tenté de l'exécuter et a échoué sans dire pourquoi. Le serveur web tourne ; l'application derrière lui (le plus souvent PHP, avec WordPress) a démarré, puis s'est arrêtée sur une erreur. Le navigateur montre une page blanche ou « HTTP ERROR 500 » ; WordPress, parfois « Il y a eu une erreur critique sur ce site ».
Différence avec les codes voisins : un 502 Bad Gateway signifie que le serveur web n'a pas pu joindre l'application (PHP-FPM arrêté), un 503 qu'il refuse volontairement de servir (surcharge, maintenance). Un 500 signifie que l'application a répondu, mais par une erreur. La cause est presque toujours dans vos fichiers ou votre configuration, et la raison exacte est dans un log.
Causes fréquentes
- Une extension ou un thème après une mise à jour. Un fichier incompatible avec la version de PHP, un conflit entre deux extensions. La cause numéro un sur WordPress.
- Un changement de version PHP. Passage à une version plus récente, et une partie du site utilise une syntaxe ou un module retiré.
- Une erreur de syntaxe dans
.htaccess. Une directive mal écrite ou un module Apache absent : Apache renvoie 500 avant même de lancer PHP. - Droits ou propriétaire incorrects. Après un transfert, des dossiers appartiennent à
root, sont illisibles pour PHP, ou au contraire trop ouverts. - Limite de mémoire atteinte. Une page a besoin de plus que
memory_limit. - Base de données. Identifiants changés, serveur MySQL ou MariaDB arrêté, disque plein, table corrompue.
Si vous êtes visiteur
Vous ne pouvez rien réparer sur un site qui n'est pas le vôtre. Rechargez plus tard ; si l'erreur reste, le propriétaire doit intervenir.
Si c'est votre site : vérifier d'abord
Lancez le Site down checker : il montre le code HTTP depuis l'extérieur. Puis lisez les logs du serveur :
# les dernières erreurs, les plus récentes en bas
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/apache2/error.log
sudo tail -n 50 /var/log/php8.3-fpm.log
sudo journalctl -u php8.3-fpm -n 50
En hébergement mutualisé, le log s'appelle souvent error_log dans le dossier du site. Lignes typiques :
PHP Fatal error: Uncaught Error: extension ou thème incompatible ; le chemin du fichier dit lequel.PHP Parse error: un fichier modifié ou une mise à jour incomplète.Allowed memory size of ... bytes exhausted: limite de mémoire..htaccess: Invalid command: erreur de syntaxe ou module absent.Permission denied: droits ou propriétaire.Error establishing a database connection: base de données.
Solutions sur votre serveur ou votre hébergement avec SSH
1. Désactiver l'extension ou le thème en cause
Sur WordPress, renommez le dossier de l'extension : elle est désactivée sans toucher à la base.
cd /var/www/example.com/wp-content/plugins
mv nom-extension nom-extension.off
Sans savoir laquelle, renommez tout le dossier plugins : le site revient, puis vous remettez les extensions une par une. Pour le thème, renommez son dossier dans wp-content/themes ; WordPress bascule sur un thème par défaut. Avec WP-CLI :
wp plugin list --status=active
wp plugin deactivate nom-extension
Pour lire l'erreur le temps du diagnostic, activez le débogage dans wp-config.php (puis retirez-le) ; les erreurs vont dans wp-content/debug.log :
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
2. Revenir à la version PHP qui fonctionnait
php -v montre la version active, ls /etc/php/ celles installées ; en hébergement mutualisé, la version se choisit dans l'espace client. Revenez à la version précédente pour remettre le site en ligne, puis mettez à jour l'extension fautive avant de repasser à la nouvelle.
3. Réparer .htaccess
Renommez le fichier pour tester : si le site revient (même avec des liens cassés), la cause est dedans.
mv .htaccess .htaccess.off
sudo apachectl -M | grep rewrite
Remettez ensuite les blocs un par un. Un module manquant s'active avec sudo a2enmod rewrite, puis rechargez Apache.
4. Droits et propriétaire
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;
Remplacez www-data par l'utilisateur de votre pool PHP-FPM.
5. Mémoire
Augmentez memory_limit dans le pool PHP-FPM ou php.ini, puis rechargez PHP-FPM. Sur WordPress, define('WP_MEMORY_LIMIT', '256M'); dans wp-config.php fait la même chose, dans la limite du serveur. Vérifiez avec free -m que la mémoire suit.
6. Base de données
systemctl status mariadb
sudo systemctl start mariadb
df -h
Comparez les identifiants de wp-config.php avec ceux de la base ; wp db repair répare une table corrompue.
Si le problème vient de votre hébergeur
Si rien n'a changé de votre côté et que les logs sont vides, envoyez :
Bonjour, mon site example.com renvoie « 500 Internal Server Error » depuis environ 9 h 30 (UTC). Rien n'a été modifié de mon côté, et le log d'erreurs ne montre rien. Y a-t-il eu un changement de version PHP ou un incident sur le serveur de mon compte ? Pourriez-vous vérifier et me dire quand le site sera de nouveau en ligne ?
Pour que cela ne se reproduise pas
Une erreur 500 arrive presque toujours juste après une mise à jour, et une vérification depuis l'extérieur la voit dès qu'elle apparaît, avant vos visiteurs. Le monitoring serveur surveille en plus l'espace disque, la mémoire et les services, et vous prévient avant que la base ne s'arrête faute de place. Sur votre propre serveur ou un hébergement mutualisé avec accès SSH, l'intervention rapide corrige les petites erreurs de configuration, sauvegarde préalable comprise, à prix fixe ; l'intervention approfondie prend le relais pour l'extension incompatible ou la version PHP, par tranches de 15 minutes, 24 h/24.
Et maintenant
Vérifier depuis l'extérieur
Le site est-il down pour tout le monde ou seulement pour vous, et que répond le serveur ? Gratuit, sans inscription.
Site down checkerEn panne ? Nous intervenons.
Sur votre propre serveur ou sur un hébergement mutualisé avec accès SSH : intervention rapide à prix fixe pour les causes fréquentes, intervention approfondie facturée par tranches de 15 minutes pour tout le reste, 24 h/24. Prix affiché avant la commande.
Demander un dépannageAutres guides
- Site inaccessible : que faire dans les 15 premières minutes
- Serveur en panne : que vérifier en premier, et dans quel ordre
- Erreur 502 Bad Gateway : trouver la cause et la corriger
- Erreur 503 : surcharge, maintenance ou limite d'hébergement ?
- Erreur 504 Gateway Timeout : trouver ce qui ralentit
- Erreur 521 et 522 Cloudflare : votre serveur d'origine ne répond pas
- DNS_PROBE_FINISHED_NXDOMAIN : le domaine ne répond plus
- ERR_CONNECTION_REFUSED : le serveur refuse la connexion
- Ce que signifie « Votre connexion n'est pas privée » et comment la corriger