PHP's 9.2-CVSS RCE: Installing the Patch Is Not the Same as Running It
A CVSS 9.2 RCE with a public patch window puts operational risk on any PHP shop, and multi-version hosting turns that risk into a verification problem: unpatched workers can keep accepting requests long after the update command succeeds. The four-step check is what separates having the fix downloaded from having the fix in the request path.
Two remote code execution vulnerabilities in PHP, CVE-2026-109618 and CVE-2026-109619, carry a CVSS score of 9.2. The patch release window is 22:00 Beijing time on October 21, according to official advance notice and CERT-EU. Teams on Hacker News are already focused on the lag between distribution builds and patch delivery, and on legacy PHP projects with no upstream support that cannot safely jump major versions. ServBay has shipped patch packages for both current and old PHP branches, but the harder issue is proving the patched binary is what actually serves traffic.
On a single machine, PHP runs through at least three independent paths: the CLI resolved by PATH, PHP-FPM workers behind Nginx or Apache via fastcgi_pass, and long-running queue workers managed by Supervisor or Systemd. Upgrading a package on disk does not reload a running php-fpm master process or interrupt resident queue processes. A php -v check only reports what the current shell's PATH points to; it says nothing about the FPM socket a site binds to or the memory image of a Laravel Queue or Swoole worker.
Recommended verification covers installed binaries and package versions, each site's FastCGI binding to the patched branch, restarts of FPM and queue workers, and runtime evidence collected through a loopback-only script. The /proc/PID/exe link reveals a process still running a replaced binary with a (deleted) marker. The same checklist doubles as evidence for audits and handoffs in mixed-version environments.
The practical exposure is uneven: supported branches have a clear patch path, while legacy projects have no upstream fix unless they use a third-party channel like ServBay.
php -v is a weak health check in multi-version environments because it reflects PATH resolution rather than the request path; process-level evidence is the only signal that matters.
Per-project PHP version isolation turns legacy compatibility into a patch-management problem, which is more tractable than forcing a risky major upgrade.
The /proc/PID/exe (deleted) marker is a cheap operational signal; it turns an invisible stale process into an auditable fact.