Votre serveur cPanel & WHM vous a écrit que le service apache_php_fpm « appears to be down », et vous devez savoir quelle version de PHP a flanché et pourquoi. Les sites qui exécutent PHP par PHP-FPM renvoient peut-être déjà des erreurs, souvent une page 503 « Service Unavailable ». L’alerte ne peut pas nommer la version, parce qu’apache_php_fpm est un seul nom pour tous les services PHP-FPM du serveur. Trouvez le service ea-phpXY-php-fpm qui est tombé, puis lisez son propre journal, qui nomme habituellement la cause en une ligne. Corrigez cette cause dans le fichier que cPanel conserve, redémarrez une seule fois et confirmez que la surveillance et les sites sont d’accord.
Ce que vous allez accomplir
- Savoir quelle version de PHP installée s’est arrêtée, même si l’alerte ne nomme que
apache_php_fpm. - Lire le journal du service et le test de configuration qui expliquent l’arrêt.
- Corriger les six causes qui reviennent sans cesse, chacune à l’endroit qui survit à la prochaine reconstruction de cPanel.
- Confirmer que le service tourne, que la surveillance se tait et qu’un site WordPress répond
200.
Prérequis
- Un accès root au serveur, par SSH ou par WHM » Server Configuration » Terminal.
- cPanel & WHM avec EasyApache 4, le système de cPanel qui installe Apache et PHP sous forme de paquets, sur AlmaLinux, Rocky Linux ou CloudLinux. Les chemins ci-dessous viennent de ces systèmes. Sur cPanel pour Ubuntu, certains chemins peuvent différer; fiez-vous à ceux qu’affichent les étapes 2 et 3.
- Au moins un domaine réglé sur PHP-FPM dans WHM » Software » MultiPHP Manager (Gestionnaire MultiPHP). Si aucun domaine n’utilise PHP-FPM, l’alerte porte sur un service dont vous n’avez pas besoin; la dernière section traite de ce cas.
- Les exemples utilisent
ea-php83comme version en panne etboutique-lac.cacomme domaine. Remplacez-les par les vôtres.
Si vous ne savez pas quel fichier appartient à quelle version, la carte des fichiers, du php.ini et de FPM d’ea-php donne chaque chemin utilisé ici.
Comment ça fonctionne
PHP-FPM, le FastCGI Process Manager, garde un groupe de processus PHP prêts à recevoir les requêtes d’Apache. FastCGI est le protocole qu’Apache utilise pour passer une requête à un programme distinct. Sur cPanel, chaque version de PHP a son propre service PHP-FPM avec un processus maître, comme ea-php82-php-fpm et ea-php83-php-fpm. Chaque maître fait tourner un pool par domaine sur cette version, et chaque pool écoute sur un fichier socket, un fichier spécial qu’Apache ouvre pour parler au pool.
cPanel regroupe tous ces maîtres sous un seul nom de service, apache_php_fpm, avec un seul script de redémarrage, /usr/local/cpanel/scripts/restartsrv_apache_php_fpm. Le moniteur de services s’appelle chkservd. Il tourne dans tailwatchd, le démon de cPanel qui surveille les journaux, et, par défaut, vérifie chaque service aux cinq minutes. Quand la vérification d’apache_php_fpm échoue, chkservd essaie le script de redémarrage et vous écrit. Une seule version en panne suffit à faire échouer toute la vérification. C’est pourquoi le courriel ne peut pas vous dire quelle version regarder.
Les autres maîtres continuent de servir leurs sites pendant qu’un seul est tombé. Seuls les domaines de la version en panne cessent de fonctionner. Repérer rapidement quels sites marchent encore vous donne donc déjà un indice.
Étapes
-
Demandez à cPanel l’état actuel. Le problème s’est peut-être réglé, parce que chkservd a tenté un redémarrage avant de vous écrire :
/usr/local/cpanel/scripts/restartsrv_apache_php_fpm --checkRésultat attendu : un message qui indique qu’
apache_php_fpmest en marche (running). Un message qui le dit arrêté ou en échec veut dire que le problème est toujours là.Une réponse saine ne termine pas le travail. Un service instable, qui tombe et revient, a l’air sain entre deux vérifications. Passez à l’étape 2 même si la vérification réussit.
-
Trouvez quelle version est tombée. Listez chaque service PHP-FPM ea-php avec son état :
systemctl list-units 'ea-php*-php-fpm.service' --all --no-pagerExemple de sortie :
UNIT LOAD ACTIVE SUB DESCRIPTION ea-php82-php-fpm.service loaded active running The PHP FastCGI Process Manager ● ea-php83-php-fpm.service loaded failed failed The PHP FastCGI Process Manager ea-php84-php-fpm.service loaded active running The PHP FastCGI Process ManagerLa ligne marquée
failedest votre version. Si chaque ligne indiqueactive running, la panne est passée; cherchez alors à quelle heure elle s’est produite à l’étape 4. -
Lisez pourquoi ce maître s’est arrêté. Commencez par systemd, puis par le journal PHP-FPM propre à la version :
systemctl status ea-php83-php-fpm --no-pager journalctl -u ea-php83-php-fpm -n 50 --no-pager tail -n 40 /opt/cpanel/ea-php83/root/usr/var/log/php-fpm/error.logExemple de sortie (abrégé) :
× ea-php83-php-fpm.service - The PHP FastCGI Process Manager Active: failed (Result: exit-code) since Sun 2026-11-01 03:41:17 EDT; 9min ago [01-Nov-2026 03:41:17] ERROR: [/opt/cpanel/ea-php83/root/etc/php-fpm.d/boutique-lac.ca.conf:21] unknown entry 'pm.max_childs' [01-Nov-2026 03:41:17] ERROR: failed to load configuration file '/opt/cpanel/ea-php83/root/etc/php-fpm.conf' [01-Nov-2026 03:41:17] ERROR: FPM initialization failedLa première ligne
ERRORest la cause, et les autres en découlent. Le nom du fichier de pool vous dit quel domaine corriger. SiActive:indique que le processus a été tué, ou affichecode=dumped(un plantage), le maître est mort au lieu de refuser un réglage. Passez aux causes B et D de l’étape 6. -
Voyez ce que chkservd a vu, et quand. Le moniteur écrit le résultat de chaque vérification dans son propre journal :
grep -n 'apache_php_fpm' /var/log/chkservd.log | tail -n 20Résultat attendu : des lignes qui mentionnent
apache_php_fpmautour de l’heure de l’alerte. Comparez ces heures avec l’heuresincede l’étape 3. Si les alertes se répètent aux cinq minutes, le redémarrage échoue chaque fois et la cause est toujours là. Le courriel d’alerte peut aussi citer un numéro d’erreur du script de redémarrage. Ce numéro ne nomme pas la cause; prenez plutôt la raison dans les journaux de l’étape 3. -
Testez la configuration sans toucher au service en marche. PHP-FPM peut vérifier son fichier principal et chaque fichier de pool qu’il inclut :
/opt/cpanel/ea-php83/root/usr/sbin/php-fpm -t -y /opt/cpanel/ea-php83/root/etc/php-fpm.confExemple de sortie, après la correction :
[01-Nov-2026 03:58:02] NOTICE: configuration file /opt/cpanel/ea-php83/root/etc/php-fpm.conf test is successfulLancez ce test après chaque correction de l’étape 6. Ne redémarrez que lorsqu’il affiche
test is successful. -
Corrigez la cause nommée par le journal. Associez la première ligne d’erreur à l’un de ces cas.
A. Un réglage de pool invalide, comme
unknown entryouinvalid value. Il suit souvent une modification à la main des réglages PHP-FPM d’un domaine. cPanel construit chaque fichier de pool à partir du fichier YAML du domaine (un fichier de réglages en texte brut); corrigez donc le YAML, ici/var/cpanel/userdata/lacnord/boutique-lac.ca.php-fpm.yaml. Rectifiez la clé ou la valeur, puis demandez à cPanel de vérifier et de reconstruire ce domaine :/usr/local/cpanel/scripts/php_fpm_config --check /usr/local/cpanel/scripts/php_fpm_config --rebuild --domain=boutique-lac.ca; echo "exit=$?"Résultat attendu :
--checkliste les configurations sans erreur pour le domaine, et la reconstruction afficheexit=0. Si quelqu’un a modifié/opt/cpanel/ea-php83/root/etc/php-fpm.d/boutique-lac.ca.confà la main, la reconstruction le remplace, et c’est voulu. Un fichier de pool que cPanel ne gère pas peut aussi bloquer le démarrage. Unwww.confégaré, ou un.confcopié et oublié dansphp-fpm.d, est le cas habituel, et--checkle signale comme orphelin. Déplacez-le dans/root.B. Une extension qui ne se charge pas après un changement de version ou une mise à jour. Interrogez le PHP en ligne de commande de la même version, qui lit le même dossier
php.d:/opt/cpanel/ea-php83/root/usr/bin/php -m > /dev/nullExemple de sortie (abrégé) :
PHP Warning: PHP Startup: Unable to load dynamic library 'redis.so' (tried: /opt/cpanel/ea-php83/root/usr/lib64/php/modules/redis.so (/opt/cpanel/ea-php83/root/usr/lib64/php/modules/redis.so: cannot open shared object file: No such file or directory), ...) in Unknown on line 0Si la commande n’affiche rien, toutes les extensions se sont chargées. Un avertissement comme celui-ci n’arrête pas toujours PHP-FPM, mais une extension qui plante au chargement, oui. Déplacez le
.inicorrespondant hors de/opt/cpanel/ea-php83/root/etc/php.d/vers/root. Réinstallez ensuite cette extension pour cette version à partir de sa source, soit WHM » Software » EasyApache 4, soit WHM » Software » Module Installers.C. OPcache a demandé plus de mémoire que le serveur peut en donner. La ligne du journal contient
Unable to allocate shared memory segment. Remettez l’ancienne valeur d’opcache.memory_consumption. Dimensionner les réglages OpCache sur cPanel explique comment choisir une valeur à partir des compteurs du cache.D. Le tueur OOM du noyau a arrêté PHP-FPM. OOM veut dire « out of memory », manque de mémoire. Quand la mémoire vive s’épuise, le noyau tue un processus pour en libérer. Cherchez dans le journal du noyau :
journalctl -k --since '2 hours ago' --no-pager | grep -i 'out of memory'Exemple de sortie :
Nov 01 03:41:09 cp1 kernel: Out of memory: Killed process 30418 (php-fpm) total-vm:1873412kB, anon-rss:1290844kB, file-rss:0kB, shmem-rss:6120kB, UID:1004 pgtables:2920kB oom_score_adj:0Un
UIDautre que 0 est un processus de travail, qui tourne sous l’utilisateur du compte.UID:0est un maître, qui tourne en root, et c’est ce cas qui arrête toute une version. Dans les deux cas, le redémarrage fonctionnera, mais le serveur manquera encore de mémoire. Baissezpm_max_children, le plafond de processus par pool, dans les fichiers YAML des domaines les plus achalandés. Reconstruisez, puis lisez la dernière section de cet article.E. Un disque plein, ou plus d’inodes libres. Les inodes sont les cases de fichiers qu’un système de fichiers distribue, et un disque peut en manquer avant de manquer d’espace. Le journal affiche
No space left on device, souvent quand le maître tente de créer un socket ou son fichier PID, qui enregistre le numéro de son processus. Vérifiez les deux :df -h / /opt /var /tmp df -i / /opt /var /tmpRésultat attendu : chaque ligne sous 90 % dans les colonnes
Use%etIUse%. Une ligne à 100 % est votre cause. Libérez de l’espace à cet endroit, souvent de vieilles sauvegardes, des journaux ou des fichiers de session, puis redémarrez.F. Une version de PHP retirée alors que des domaines l’utilisent encore. Comparez ce qui est installé avec ce que les domaines demandent :
whmapi1 php_get_installed_versions whmapi1 php_get_vhost_versions | grep -E '^ +(version|vhost): 'Chaque
version:de la deuxième liste doit figurer dans la première. Un domaine sur une version disparue n’a plus de PHP fonctionnel, etsystemctl status ea-php81-php-fpmrépondUnit ea-php81-php-fpm.service could not be found.Déplacez ces domaines vers une version installée dans le Gestionnaire MultiPHP, puis lancez/usr/local/cpanel/scripts/php_fpm_config --rebuildpour tout le serveur. -
Redémarrez par cPanel, une seule fois. Le script de redémarrage démarre chaque version et garde chkservd synchronisé :
/usr/local/cpanel/scripts/restartsrv_apache_php_fpmRésultat attendu : le script attend le service, puis indique qu’
apache_php_fpmest en marche. S’il signale un échec, retournez à l’étape 3. Le journal montrera une nouvelle première erreur.
Valider que ça fonctionne
-
Chaque maître tourne. Relancez la commande de l’étape 2. Chaque ligne doit indiquer
active running. -
La configuration passe toujours le test. Lancez le test de l’étape 5 pour la version corrigée. Il doit afficher
test is successful. -
La surveillance est d’accord. Attendez la prochaine vérification, cinq minutes au plus par défaut. La commande de l’étape 4 ne doit montrer aucun nouvel échec après votre redémarrage, et chkservd peut aussi envoyer un avis de rétablissement par courriel. WHM » Server Status » Service Status doit montrer le service PHP-FPM comme actif.
-
Un site sur la version corrigée répond. Choisissez un domaine WordPress qui utilise la version réparée :
curl -s -o /dev/null -w '%{http_code}\n' https://boutique-lac.ca/ curl -s -o /dev/null -w '%{http_code}\n' https://boutique-lac.ca/wp-login.phpRésultat attendu :
200pour les deux. Un503veut dire qu’Apache n’arrive toujours pas à joindre le pool; le premier point du dépannage couvre ce cas. -
Les domaines pointent vers des versions installées. Lancez les deux commandes
whmapi1de la cause F. Chaqueversion:doit figurer dans la liste des versions installées.
Dépannage
- Le service tourne, mais les sites d’une version affichent 503. Apache n’arrive pas à joindre le socket de ce domaine. Cherchez dans
/etc/apache2/logs/error_logdes lignesAH02454, le code d’Apache pour une connexion ratée à un socket FastCGI, qui nomment un socket sous/opt/cpanel/ea-php83/root/usr/var/run/php-fpm/. Lancez/usr/local/cpanel/scripts/php_fpm_config --rebuild --domain=boutique-lac.ca, puis redémarrez avec le script de l’étape 7. - L’alerte arrive aux cinq minutes. Chaque vérification lance le redémarrage, et chaque redémarrage bute sur la même erreur. Arrêtez de redémarrer à la main. Lancez le test de l’étape 5, qui montre l’erreur sur laquelle le redémarrage bute.
- L’alerte est arrivée une seule fois, pendant un redémarrage du serveur. La vérification peut tomber pendant que les services s’arrêtent ou démarrent. Si l’étape 2 montre que tout tourne et que le journal de l’étape 4 est propre ensuite, vous pouvez vous arrêter là.
- La reconstruction affiche un code de sortie autre que 0. Le fichier YAML contient fort probablement une erreur de syntaxe. Il manque souvent une espace après un deux-points, ou une tabulation sert à l’indentation. Corrigez le fichier, puis lancez
/usr/local/cpanel/scripts/php_fpm_config --checkavant de reconstruire de nouveau. - Le même domaine retombe en panne après quelques jours. Quelqu’un modifie encore le fichier de pool généré, ou l’installateur d’une extension y ajoute un réglage à la main. Mettez le réglage dans le fichier YAML du domaine ou dans le Gestionnaire MultiPHP, pour que la reconstruction le conserve.
Quand ce n’est pas la bonne approche
Si le tueur OOM revient plus d’une fois à la cause D, vous avez un problème de capacité, pas un problème de PHP-FPM. Chaque redémarrage vous achète quelques heures. Une correction durable demande moins de processus par pool, moins de versions de PHP actives ou plus de mémoire. La page du script php_fpm_config de cPanel recommande au moins 2 Go de mémoire vive disponible, ou au moins 30 Mo par domaine, avant d’activer PHP-FPM.
Sur les serveurs CloudLinux où les sites passent par mod_lsapi, un module Apache qui exécute PHP sans PHP-FPM, ou sur LiteSpeed Web Server, ces sites n’utilisent pas apache_php_fpm. Une alerte peut alors concerner des domaines restés sur PHP-FPM, ou un service que personne n’utilise. Vérifiez la liste de l’étape 2 et le Gestionnaire MultiPHP avant de changer quoi que ce soit. Ne désactivez la surveillance dans WHM » Service Configuration » Service Manager qu’après avoir confirmé qu’aucun domaine n’utilise PHP-FPM. Si vous louez un seul compte sur le serveur de quelqu’un d’autre, ces commandes ne sont pas à votre portée. Envoyez à votre hébergeur l’heure de l’alerte et les domaines touchés. Pour le comportement des redémarrages des autres services cPanel, voyez redémarrer les services cPanel sans risque. La documentation TailWatch de cPanel décrit comment chkservd vérifie et redémarre les services.
Si les alertes sonnent dans une pièce vide après les heures, c’est exactement ce que ferme la Surveillance et intervention 24/7 — planifiez une revue de surveillance.