Kort gezegd: Om de PHP-versie te controleren volstaat php -v niet. U moet weten welke PHP-versie de webserver werkelijk gebruikt, of het pakket de correctie bevat, ook als backport met een oud nummer, en of na de update alle processen zijn herstart. Verholpen is PHP2Shell in 8.5.12, 8.4.27, 8.3.36 en 8.2.35.
Waarom het versienummer alleen niet volstaat
Voor PHP2Shell bestaat een duidelijke lijst van verholpen versies. In de praktijk leiden toch drie situaties tot verkeerde inschattingen:
- Meerdere installaties: de opdrachtregel toont PHP 8.3, maar de website draait via een pool met PHP 8.1.
- Backports: distributies en hosters installeren correcties soms in bestaande pakketten. Dan toont bijvoorbeeld Plesk nog steeds 8.2.34, hoewel er is gepatcht.
- Oude processen: de nieuwe bestanden staan op de schijf, maar de lopende workers stammen nog van daarvoor.
Voor directie en niet-technici helpt een eenvoudige vuistregel: vraag niet alleen „Welke PHP-versie hebben we?”, maar „Is PHP2Shell op alle servers gedicht, en waaraan zien we dat?”. Een betrouwbaar antwoord bevat drie bewijzen: versie of backport, pakketstand en tijdstip van de herstart.
De technische controle kent daarom drie stappen: versie, pakketstand, lopende processen. De onderstaande opdrachten zijn puur lezend. Pakket- en dienstnamen verschillen per distributie, PHP-bron en hostinginterface; de voorbeelden gaan uit van PHP 8.3.
PHP-versie controleren op de opdrachtregel
php -v # versie van de opdrachtregel
ls /etc/php/ 2>/dev/null # Debian/Ubuntu: geïnstalleerde takken
php-fpm8.3 -v # versie van de FPM-binary (naam verschilt per distributie)
php -i | grep -E "^PHP Version|Server API|Loaded Configuration File"
Onder RHEL, AlmaLinux of Rocky heet de FPM-binary meestal php-fpm; bij Software Collections of externe bronnen staan verdere versies in eigen paden. Plesk en cPanel brengen eigen PHP-installaties mee, die naast de systeem-PHP bestaan. Hoe u daar te werk gaat, beschrijven we op de pagina's over Plesk en cPanel.
Welke PHP-versie een website in de webcontext gebruikt, ziet u het betrouwbaarst in de pool- of VirtualHost-configuratie of in de hostinginterface. Een phpinfo-pagina toont het eveneens; maak haar alleen kort aan, met toegangsbeveiliging en een willekeurige naam, en verwijder haar direct daarna.
Bij shared hosting hebt u meestal geen toegang tot de opdrachtregel. Dan toont de hostinginterface de ingestelde PHP-versie per website. Of een backport is geïnstalleerd en herstart, staat daar echter zelden. Hier is de schriftelijke bevestiging van de hoster de betrouwbare weg.
Pakketstand en backports controleren
De pakketstand toont wat uw distributie werkelijk heeft geleverd:
# 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"
Staat een van de CVE-nummers in de changelog, dan zit de backport in het geïnstalleerde pakket. Ontbreekt de vermelding, dan is dat nog geen bewijs voor een kwetsbaarheid: sommige pakketbeheerders formuleren changelogs anders. Vergelijk dan de pakketversie met de beveiligingsmeldingen van uw distributie of vraag het de aanbieder. Een voorbeeld voor die vraag vindt u onder Zo vraagt u uw hoster naar de patchstatus.
Belangrijk: controleer elk geïnstalleerd PHP-pakket, niet alleen het eerste. Op servers met meerdere takken is vaak de ene gepatcht en een andere niet.
Draait de nieuwe versie ook werkelijk?
Een update is pas werkzaam als alle PHP-processen zijn herstart. Vergelijk de starttijd van de lopende processen met het tijdstip van de update:
ps -o pid,lstart,cmd -C php-fpm8.3 # starttijd van de FPM-processen
systemctl status php8.3-fpm # sinds wanneer de service draait
needrestart -r l # Debian/Ubuntu, indien geïnstalleerd: toont verouderde processen
Ligt de starttijd vóór de update, dan draaien er nog oude processen. Bij Apache met mod_php geldt hetzelfde voor de Apache-processen. Hoe u netjes herstart, beschrijft PHP-FPM en alle workers herstarten.
Leg het resultaat schriftelijk vast: server, PHP-versie, pakketversie, CVE in de changelog ja of nee, tijdstip van de herstart. Deze notitie hebt u nodig voor directie, verzekeraar en een latere sporencontrole.
Het resultaat duiden
| Bevinding | Beoordeling |
|---|---|
| Officiële versie 8.5.12, 8.4.27, 8.3.36 of 8.2.35, processen herstart | PHP2Shell gedicht |
| Oudere nummer, CVE-nummers in de pakketchangelog, processen herstart | backport geïnstalleerd, gedicht |
| Oudere nummer, geen vermelding in de changelog, geen bevestiging | onduidelijk, bij de aanbieder uitzoeken |
| PHP 8.1 of ouder zonder bevestigde backport | open, overbruggingsmaatregelen en migratie nodig |
| Processen ouder dan de update | herstart ontbreekt, kwetsbaarheid blijft actief |
Blijft een server in de status „onduidelijk”, behandel hem dan als een open server: overbruggingsmaatregelen instellen en de opheldering blijven natrekken tot er een bewijs is. Het volledige versieoverzicht staat onder Welke PHP-versies zijn getroffen?.
Hoe helpt PHP SOS concreet?
Met de PHP-patchservice nemen wij de controle en het bewijs over:
- Alle installaties vinden, ook tweede versies uit hostingpanelen, Software Collections of containers.
- Pakketstand beoordelen: officiële release, backport of open, met bewijs uit de changelog of van de aanbieder.
- Herstart controleren, tot er geen proces met oude code meer draait.
- Controleprotocol opstellen dat u intern en tegenover derden kunt gebruiken.
Veelgestelde vragen
Waarom toont php -v een andere versie dan mijn website?
Op veel servers zijn meerdere PHP-versies geïnstalleerd. De opdrachtregel gebruikt er één, de webserver of een FPM-pool een andere. Controleer daarom de versie die werkelijk in de webcontext draait, bijvoorbeeld via de FPM-binary of de hostinginterface.
Hoe herken ik een backport?
Bij distributiepakketten staat de correctie vaak in de pakketchangelog, vaak met het CVE-nummer. Onder Debian en Ubuntu helpt apt changelog, onder RHEL-achtige systemen rpm -q --changelog. Ontbreekt de vermelding, dan stelt u de stand vast bij de aanbieder.
Kan ik de PHP-versie in het klantenmenu van de hosting controleren?
Ja, de meeste interfaces tonen de ingestelde versie per website. Of een backport is geïnstalleerd en herstart, ziet u daar meestal niet. Daarvoor is een schriftelijke bevestiging van de hoster de betrouwbare weg.