Retour au blog

Comment corriger un service PHP-FPM bloqué sur Ubuntu (502 Bad Gateway)

2025-09-156 min read

Votre site Nginx est hors service avec une erreur 502 Bad Gateway. Vous redémarrez PHP-FPM et obtenez une erreur telle que Job for php8.3-fpm.service failed.... Voici la méthode rapide et fiable que j'utilise pour résoudre ce problème.

1) Trouver le vrai problème

Lorsque systemctl affiche un échec comme status=78, cela indique souvent une mauvaise configuration. Commencez par tester la configuration :

sudo php-fpm8.3 -t

Si cela fonctionne mais que le service ne démarre toujours pas, vérifiez les journaux complets du service :

sudo journalctl -xeu php8.3-fpm.service

Recherchez une ligne ERROR similaire à :

ERROR: Another FPM instance seems to already listen on /var/run/php/your-socket-name.sock

Cela signifie qu'un ancien processus PHP-FPM bloqué écoute toujours sur le socket, empêchant la nouvelle instance de démarrer.

2) La solution : libérer l'ancien processus

Dans les commandes ci-dessous, remplacez /var/run/php/your-socket-name.sock par le chemin réel du socket indiqué dans votre journal d'erreurs.

  1. Trouver le processus bloqué (PID)

    sudo lsof /var/run/php/your-socket-name.sock

    Ceci affiche le processus qui détient le socket (probablement exécuté en tant que root). Notez son PID.

  2. Arrêter ce processus

    # Remplacez 12345 par le PID réel
    sudo kill 12345

    S'il refuse de s'arrêter après quelques secondes, vous pouvez le forcer (à utiliser avec prudence) :

    sudo kill -9 12345
  3. Supprimer le fichier de socket obsolète

    sudo rm /var/run/php/your-socket-name.sock

    PHP-FPM le recréera lors de son démarrage.

  4. Démarrer PHP-FPM

    sudo systemctl start php8.3-fpm

    Votre service devrait maintenant démarrer correctement. Vérifiez son statut :

    systemctl status php8.3-fpm

3) Pourquoi cela se produit

Si PHP-FPM plante ou est arrêté de manière inattendue, il peut laisser derrière lui un processus enfant actif ou un socket obsolète. Systemd tente de démarrer un nouveau processus maître, mais le socket est déjà occupé.

4) Prévenir la prochaine fois

  • Redémarrages gracieux : Préférez systemctl reload php8.3-fpm pour les modifications de configuration.
  • Surveiller les journaux : Gardez un œil sur /var/log/php8.3-fpm.log (ou le chemin de votre distribution) pour les plantages.
  • Socket vs port : Si vous rencontrez constamment des conflits de socket, envisagez d'utiliser TCP (127.0.0.1:9000) temporairement pendant que vous déboguez.

Liste de contrôle rapide à copier-coller

# 1) Vérification de la configuration
sudo php-fpm8.3 -t

# 2) Inspection des journaux du service
sudo journalctl -xeu php8.3-fpm.service

# 3) Si erreur "already listen" -> libérer le socket
sudo lsof /var/run/php/your-socket-name.sock
sudo kill <PID>
sudo rm /var/run/php/your-socket-name.sock

# 4) Démarrer le service
sudo systemctl start php8.3-fpm

# 5) Vérifier
systemctl status php8.3-fpm

Restez Informé

Recevez les derniers articles et insights dans votre boîte mail.

Unsubscribe anytime. No spam, ever.