14:00 UTC on Wednesday, 21 October 2026. That timestamp sat in my calendar for days before anything shipped, which is the oddest thing about how PHP handled CVE-2026-109618 and CVE-2026-109619: we knew the hour of the fix before we knew what was broken. Two bugs, each scored 9.2 on CVSS v4.0, a CERT-EU advisory numbered 2026-018 mentioning possible remote code execution, and a php.net notice that said, more or less, details arrive with the release. Some people read that as secrecy. I read it as the project handing every team a free fire drill, and I suspect most of us spent it refreshing the announcement page.
The way I see it, the hard part of a critical runtime fix is mechanical, and it's in your pipeline. Understanding the bug comes second. You can't do anything useful with the advisory text until it exists, but you can find out on a quiet Tuesday whether bumping the PHP minor patch level on production is a ten-minute job or a two-day archaeology project. If changing the runtime means opening a ticket with a hosting provider whose support queue answers in 48 hours, a 9.2 has become a calendar problem. Your code had nothing to fix.
I spoke to a freelancer last week (she asked me not to name her) who maintains around thirty client sites. On 20 October she could tell me the framework version of every one of them from memory. She could not tell me which ones she was even allowed to upgrade PHP on. Eleven sat on shared hosting where the PHP version is a dropdown someone else populates. Four lived on a VPS a former agency set up in 2021 with a hand-compiled build nobody dared to touch. That's not negligence. Our tooling tracks composer.lock lovingly and treats the interpreter underneath like weather.
The strongest objection to the pre-announcement model deserves a real hearing. Announcing a critical release without details arguably tips off attackers that something juicy is coming, and it tips off executives too, who then forward a scary headline and ask whether the shop should go dark. CERT-EU's own text didn't help the calm crowd: where you can't remediate quickly, it suggests considering cutting internet-facing applications off from public networks until a fix is in place. Read quickly, that sounds like "unplug everything", and I watched at least one Slack channel spiral on exactly that reading.
I still think the trade is worth it. Attackers who can diff source trees learn about the bug the moment the patch lands anyway, announced or not; the notice only changes how ready the defenders are at that moment. And CERT-EU's wording is conditional for a reason. Isolation is the fallback for a box you cannot patch, which is itself an admission that the real failure happened months earlier when nobody owned that box. The panic in that Slack channel came from not knowing the answer to a boring question, namely which of our servers can take a new PHP build today.
So here is what I'd change, and it's small. Treat the PHP binary like a dependency with a lockfile. Pin it in your container base image or your provisioning config, put it in the same pull request flow as everything else, and let your CI run the test suite against the next patch release the day it appears. If your stack is Docker, that's a one-line FROM change and a green pipeline. If it's shared hosting, it's a written agreement about how fast the host ships security builds, and that agreement belongs in the contract next to the uptime number. Neither of those is glamorous, and that is the point: on 21 October the teams that had them did their rollout before lunch and went back to arguing about naming conventions.
The advisory is public now, so go read the actual affected and fixed versions on php.net and from your distribution, and check them against what your web servers really execute. I'm deliberately not repeating version numbers here, because the fastest way to spread a wrong one is a column written from memory. What I care about is the next one. There will be another dated security release, and the PHP team will very likely give us the same courtesy of a heads-up.
So, honestly: when the next pre-announced critical release lands, how long will it take you, measured in hours, to get a patched PHP runtime onto every production host you're responsible for, and what is the single slowest step in that chain?




Comments
No comments yet — be the first.
Open the discussion
No account or password needed — just enter your e-mail and we’ll send you a one-time sign-in link. First time here? You’re set up automatically.
Your rating will be applied automatically after you sign in.
Check your inbox
We’ve sent a sign-in link to …. Open it on this device — this tab will sign you in automatically.
Nothing arrived? Check your spam folder — and mark the mail as "Not spam" so it lands in your inbox next time.