En bref : pour vérifier la version de PHP, php -v ne suffit pas. Vous devez savoir quelle version de PHP le serveur web utilise réellement, si le paquet contient la correction, y compris sous forme de backport avec un ancien numéro, et si tous les processus ont été redémarrés après la mise à jour. PHP2Shell est corrigée dans 8.5.12, 8.4.27, 8.3.36 et 8.2.35.
Pourquoi le numéro de version seul ne suffit pas
Pour PHP2Shell, il existe une liste claire de versions corrigées. En pratique, trois situations conduisent pourtant à des erreurs d'appréciation :
- Plusieurs installations : la ligne de commande affiche PHP 8.3, mais le site web fonctionne via un pool avec PHP 8.1.
- Backports : les distributions et hébergeurs appliquent parfois des corrections dans des paquets existants. Plesk continue alors par exemple d'afficher 8.2.34 alors que le correctif est appliqué.
- Anciens processus : les nouveaux fichiers sont sur le disque, mais les workers en cours d'exécution datent encore d'avant.
Pour la direction et les non-techniciens, une règle simple aide : ne demandez pas seulement « Quelle version de PHP avons-nous ? », mais « PHP2Shell est-elle refermée sur tous les serveurs, et à quoi le voit-on ? ». Une réponse solide comporte trois preuves : version ou backport, état des paquets et heure du redémarrage.
La vérification technique comporte donc trois étapes : version, état des paquets, processus en cours. Les commandes ci-dessous sont en lecture seule. Les noms de paquets et de services varient selon la distribution, la source de PHP et l'interface d'hébergement ; les exemples partent de PHP 8.3.
Vérifier la version de PHP en ligne de commande
php -v # version de la ligne de commande
ls /etc/php/ 2>/dev/null # Debian/Ubuntu : branches installées
php-fpm8.3 -v # version du binaire FPM (le nom varie selon la distribution)
php -i | grep -E "^PHP Version|Server API|Loaded Configuration File"
Sous RHEL, AlmaLinux ou Rocky, le binaire FPM s'appelle généralement php-fpm ; avec des Software Collections ou des sources tierces, d'autres versions se trouvent dans leurs propres chemins. Plesk et cPanel apportent leurs propres installations PHP, qui coexistent avec le PHP du système. Comment procéder là, nous le décrivons sur les pages consacrées à Plesk et à cPanel.
La façon la plus fiable de voir quelle version de PHP un site web utilise dans le contexte web est la configuration du pool ou de l'hôte virtuel, ou l'interface d'hébergement. Une page phpinfo l'indique aussi ; ne la créez que brièvement, avec une protection d'accès et un nom aléatoire, et supprimez-la aussitôt après.
Avec un hébergement mutualisé, vous n'avez généralement pas d'accès à la ligne de commande. L'interface d'hébergement affiche alors la version de PHP réglée pour chaque site web. On n'y voit toutefois rarement si un backport a été appliqué et redémarré. Ici, la confirmation écrite de l'hébergeur est la voie fiable.
Vérifier l'état des paquets et les backports
L'état des paquets montre ce que votre distribution a réellement livré :
# Debian/Ubuntu
apt policy php8.3-fpm
apt changelog php8.3-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"
# RHEL, AlmaLinux, Rocky, Fedora
dnf info php-fpm
rpm -q --changelog php-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"
Si l'un des numéros CVE figure dans le journal des modifications, le backport est inclus dans le paquet installé. Si l'entrée est absente, ce n'est pas encore la preuve d'une faille : certains mainteneurs de paquets formulent autrement les journaux des modifications. Comparez alors la version du paquet avec les avis de sécurité de votre distribution ou interrogez le fournisseur. Vous trouverez un modèle pour cette demande sous Comment interroger votre hébergeur sur l'état des correctifs.
Important : vérifiez chaque paquet PHP installé, pas seulement le premier. Sur les serveurs avec plusieurs branches, l'une est souvent corrigée et une autre non.
La nouvelle version tourne-t-elle vraiment ?
Une mise à jour n'est effective que lorsque tous les processus PHP ont été redémarrés. Comparez l'heure de démarrage des processus en cours avec le moment de la mise à jour :
ps -o pid,lstart,cmd -C php-fpm8.3 # heure de démarrage des processus FPM
systemctl status php8.3-fpm # depuis quand le service tourne
needrestart -r l # Debian/Ubuntu, si installé : affiche les processus obsolètes
Si l'heure de démarrage est antérieure à la mise à jour, d'anciens processus tournent encore. Avec Apache et mod_php, il en va de même pour les processus Apache. Comment redémarrer proprement, Redémarrer PHP-FPM et tous les workers le décrit.
Consignez le résultat par écrit : serveur, version de PHP, version du paquet, CVE dans le journal des modifications oui ou non, heure du redémarrage. Vous aurez besoin de cette note pour la direction, l'assureur et un examen ultérieur des traces.
Interpréter le résultat
| Constat | Appréciation |
|---|---|
| Version officielle 8.5.12, 8.4.27, 8.3.36 ou 8.2.35, processus redémarrés | PHP2Shell refermée |
| Numéro plus ancien, numéros CVE dans le journal des modifications du paquet, processus redémarrés | backport appliqué, refermée |
| Numéro plus ancien, aucune entrée dans le journal des modifications, aucune confirmation | incertain, à clarifier auprès du fournisseur |
| PHP 8.1 ou antérieur sans backport confirmé | ouverte, mesures transitoires et migration nécessaires |
| Processus plus anciens que la mise à jour | redémarrage manquant, faille toujours active |
Si un serveur reste au statut « incertain », traitez-le comme un serveur ouvert : mettez en place des mesures transitoires et assurez le suivi de la clarification jusqu'à ce qu'une preuve existe. L'aperçu complet des versions figure sous Quelles versions de PHP sont concernées ?.
Comment PHP SOS aide-t-il concrètement ?
Avec le service de correctifs PHP, nous prenons en charge la vérification et l'attestation :
- Trouver toutes les installations, y compris les versions secondaires issues de panneaux d'hébergement, de Software Collections ou de conteneurs.
- Apprécier l'état des paquets : version officielle, backport ou ouverte, avec preuve issue du journal des modifications ou du fournisseur.
- Contrôler le redémarrage, jusqu'à ce qu'aucun processus n'exécute plus l'ancien code.
- Établir un procès-verbal de vérification, que vous pouvez utiliser en interne et envers des tiers.
Questions fréquentes
Pourquoi php -v affiche-t-il une autre version que mon site web ?
Sur de nombreux serveurs, plusieurs versions de PHP sont installées. La ligne de commande en utilise une, le serveur web ou un pool FPM une autre. Vérifiez donc la version qui fonctionne réellement dans le contexte web, par exemple via le binaire FPM ou l'interface d'hébergement.
Comment reconnaître un backport ?
Avec les paquets de distribution, la correction figure souvent dans le journal des modifications du paquet, fréquemment avec le numéro CVE. Sous Debian et Ubuntu, apt changelog aide ; sur les systèmes de type RHEL, rpm -q --changelog. Si l'entrée est absente, clarifiez l'état auprès du fournisseur.
Puis-je vérifier la version de PHP dans l'espace client de l'hébergement ?
Oui, la plupart des interfaces affichent la version réglée pour chaque site web. Vous n'y voyez en général pas si un backport a été appliqué et redémarré. Pour cela, une confirmation écrite de l'hébergeur est la voie fiable.