Security

New PHP security fixes — the no-DevOps guide to updating your site

By Sintropyc ·

PHP's September and October 2026 updates patched high-severity bugs in SOAP, the PostgreSQL extension, OpenSSL verification and PHP-FPM. If your site runs PHP and nobody on your team speaks server, here is the shortest path to getting on a safe version today.

PHP shipped another round of security releases this autumn. The headline fixes include a high-severity flaw in the SOAP extension (CVE-2026-91765), a SQL-injection class bug in the PostgreSQL extension (CVE-2026-17543), plus patches in OpenSSL certificate verification, the HTTP stream wrapper and PHP-FPM. Every actively supported branch received an update, so the question for anyone running a PHP site is not whether to update but how fast.

First, in ten seconds: what version is your site on?

You cannot plan an update without knowing where you start. Pick whichever is easiest:

Now compare against the list below.

Which versions are still safe to run

As of October 2026, only four PHP branches are still receiving fixes:

Anything older (8.1, 8.0, the whole PHP 7 line) has been unsupported for a while. If your site is on PHP 8.1 or earlier, no amount of patching will help — the upstream project is not writing fixes for it anymore, and every new CVE in those versions is a free attack surface.

You can confirm current support status on php.net/supported-versions.php — that page is the authoritative source. Third-party CVE aggregators are useful signal, but version numbers and support dates should come from php.net.

The update, if nobody on your team speaks server

Pick the row that matches how your site is hosted. In every case the fix is the same conceptually — switch the PHP version your site runs on to the latest patch of whichever branch you are already on (so 8.3.x → 8.3.35, 8.4.x → 8.4.26, and so on). You almost never need to jump a major version at the same time.

Shared hosting with cPanel, Plesk, DirectAdmin or ISPmanager

Most low-cost hosts (Hostinger, SiteGround, Bluehost, Namecheap, Beget, Timeweb, and nearly every regional reseller) run one of these control panels. The update is a UI click.

1. Log in to the hosting control panel. 2. Find "Select PHP Version" (cPanel), "PHP Settings" (Plesk), or "PHP Selector" (DirectAdmin / ISPmanager). 3. Switch to the latest patch of your current branch — if you were on 8.3, pick the newest 8.3.x; if you were on 8.4, pick the newest 8.4.x. 4. Save, then open your site in a private browser window and click through the main pages. If anything looks broken, switch back to the previous version from the same screen — this is reversible in one click.

If your host only offers major versions ("PHP 8.3", "PHP 8.4") without patch numbers, that is fine. Shared hosts auto-apply the latest patch inside each branch. Simply picking the highest supported major you can is the whole update.

WordPress on managed hosting (WP Engine, Kinsta, Pressable, Pantheon, Cloudways)

Managed WordPress hosts handle the PHP update for you, but you still have to select which version your site uses.

1. Open your host's dashboard. 2. Find the site, then look for an "Environment", "PHP version" or "Tools" panel. 3. Move the slider or dropdown to PHP 8.3 or 8.4. Avoid staying on 8.2 past December 2026. 4. Managed hosts usually have a staging environment button right next to it — flip staging first, test, then promote.

If you installed WordPress yourself on a shared host, follow the cPanel path above instead.

Docker-based deployments

If your site is a Dockerfile with a FROM php:... line, the update is a one-character change.

1. Open the Dockerfile. 2. Change the base image tag to the latest patch of your branch — for example php:8.4.26-fpm or php:8.3.35-apache. 3. Rebuild and redeploy the image. Most CI/CD pipelines will handle this on the next push. 4. If you pin only the major version (php:8.4-fpm), you already pull the latest patch on every rebuild — just redeploy.

A VPS where you run PHP from the OS packages

On Ubuntu or Debian servers using Ondřej Surý's PPA (which is the overwhelmingly common setup):

sudo apt update
sudo apt upgrade php8.3 php8.3-fpm php8.3-cli php8.3-common
sudo systemctl restart php8.3-fpm

Replace 8.3 with whichever branch you are on. On RHEL / AlmaLinux / Rocky with Remi's repository, use dnf update php and restart php-fpm.

If you have no idea what hosts your site

Email the person or company who built it. The message is literally two lines: "Our site runs on PHP. Please update it to the latest patch of PHP 8.3 or 8.4 and confirm when it's done." That is a 10-minute job for anyone who deploys the site.

If you cannot update today — what to do in the meantime

Sometimes the update has to wait: your developer is unavailable, the host is in a maintenance window, or you are blocked on a plugin that still crashes on the newer PHP. The attack window does not care, so narrow it:

These are stopgaps, not fixes. Schedule the actual update as soon as the blocker clears.

Three things to check after you update

The update takes minutes. The next step takes about the same time and catches most regressions.

What this has to do with us

The whole reason bugs like these have an attack value is that the gap between patch released and patch deployed on your site is usually measured in months, not days. That window is exactly what an attacker enumerates against. Sintropyc's Proof scan and Continuous audits treat an unpatched runtime as a finding with proof attached — a working exploit, not a scanner tag — and re-test once you ship the fix.

If you want the window closed and verified rather than just announced, that is what a Proof scan is for.

See it proven on your own app

One fixed price. A full test, every finding proven with a working exploit, the exact fix, and a retest after you ship.