Skip to main content
Critical · patched 21 Oct 2026

Is your website vulnerable to PHP2Shell?

PHP2Shell is the critical PHP vulnerability of October 2026: a pair of PHP flaws, fixed on 21 October 2026, that let attackers take over a web server without logging in. Working PHP2Shell exploits were public before the fix. If your site runs WordPress, WooCommerce, Drupal, Joomla or any PHP app, find out in two minutes whether you need to act.

Updated 23 October 2026 · By Dean, founder of Entidex Ltd

CVE-2026-109618CVE-2026-109619CVSS v4.0 9.2
Who is affectedEvery PHP install that serves web pages: PHP-FPM, Apache mod_php, php-cgi, LiteSpeed, FrankenPHP.
The fix8.5.12 · 8.4.27 · 8.3.36 · 8.2.35
Older PHP7.4, 8.0 and 8.1 are end of life. They need a source patch or an upgrade.
UK guidanceThe NCSC says update internet-facing PHP systems now, or take them offline until you can.

Free website vulnerability check

Do you need to do anything about PHP2Shell?

Three questions. Nothing is sent anywhere; the answer appears below.

php2shell-check0 / 3 answered
1. Who runs the server your website is on?
2. Which PHP version does it run?

WordPress: Tools › Site Health › Info › Server. On a server: php -v

3. Has anyone confirmed in writing that it was patched on or after 21 October?
Waiting for answers

Answer the three questions above and your result appears here.

Free tool for servers

Free PHP2Shell scanner for Linux servers

A version number alone can mislead. Ubuntu, Debian and Red Hat backport the PHP2Shell fix into older-looking versions, so 8.3.6 can be patched while a newer-looking self-compiled build is not. The free PHP2Shell Check script reads what is really installed:

  • Every PHP on the box: command line, each PHP-FPM version, Apache mod_php, LiteSpeed, cPanel, Plesk and CloudLinux builds.
  • Patched or not, using the fixed releases and your distribution's package changelog.
  • PHP workers still running old code after an update, which need a restart.
  • Signs of compromise: web-shell code patterns, PHP files in upload and temp folders, changed WordPress core files.
  • PHP programs in places other users can change, which it lists but never runs, and PHP inside containers, which it reports rather than guessing.
curl -fsSLO https://entidex.com/downloads/php2shell-check.sh
sudo bash php2shell-check.sh --json report.json

Read-only: it never installs, updates, restarts, deletes or edits anything. Exit codes (0 patched, 1 action needed, 2 not confirmed) make it easy for agencies and MSPs to run across many servers. Download the script. Only run it on servers you own or are authorised to manage.

Terminal output of the PHP2Shell Check script on an Ubuntu 24.04 server: one PHP runtime found, patched through the Ubuntu security update, nothing suspicious in the file checks, result PATCHED.
The check on an Ubuntu 24.04 test server after the fix. PHP still says 8.3.6, but the package changelog shows Ubuntu's backported PHP2Shell fix, so it is marked patched.

Need proof for an insurer, client or manager? With a Patch Check order you add --submit and your check code. The report (hostname, OS, PHP versions and any flagged file paths) is sent to us, verified automatically and you get a signed, dated result. Nothing leaves your server without --submit.

Fixed prices · UK small businesses

Get PHP2Shell checked or fixed

Free check

Free

  • The three-question self-check
  • The read-only PHP2Shell Check script
  • Plain-English next steps
Run the check

Patch Check

£49 per server

  • Order online: pay by bank transfer or card
  • Run one command on your server; the report comes straight to us
  • Checked automatically within a minute
  • Signed, dated result once paid, with a link your insurer or client can verify
Order a Patch Check

Emergency Fix

£149 per server

  • One command: shows every package it will change, then waits for YES
  • Checks for compromise first and stops if anything looks wrong
  • Backs up, updates, restarts PHP only, checks your sites still load
  • Rolls back automatically if a site stops loading (when your system still has the old packages)
  • Tested on Ubuntu, Debian and AlmaLinux; cPanel, Plesk and LiteSpeed servers are patched by hand
  • Signed, dated "fixed" result; £299 per server for PHP 8.1 and older
Order a fix

Every order gets a numbered pro-forma straight away. Pay by bank transfer, or reply for a card payment link. The Patch Check is £49 per server, re-checks included. The Emergency Fix is £149 per server on supported PHP (8.2 to 8.5) and £299 per server on end-of-life PHP (8.1 or older). It runs on your server with one command, shows you every package it will change and changes nothing until you type YES. If it finds signs of compromise, or anything it can't fix safely, it stops before changing anything and we take over. Only run it on systems you own or are authorised to manage. Questions? Email hello@entidex.com with your website address and who hosts it.

Emergency Fix · step by step

What the Emergency Fix does on your server

  1. Checks first, read-only. It runs the PHP2Shell Check. If it finds signs of compromise, PHP it can't fix safely, or a hosting control panel (cPanel, Plesk, LiteSpeed), it stops and we take over.
  2. Confirms your order. It checks the order is paid and covers this server. A server once flagged for possible compromise needs a person to look at it first.
  3. Shows the plan. It refreshes your package lists (waiting if automatic updates are running) and lists every package the update will change, including anything PHP needs updated with it. It stops if anything would be removed or a PHP package is held, and tells you whether it can roll back.
  4. Waits for YES. Nothing changes until you type YES. Add --dry-run to see the plan without installing anything (it only refreshes your package lists, and you can do it before paying).
  5. Backs up and updates. It saves your PHP settings and current packages, updates through your own package manager, and restarts PHP services only.
  6. Checks your websites. If a website that loaded before stops loading, it puts the old packages and settings back and we contact you.
  7. Re-checks and signs. It runs the check again and sends both reports to us. Only a clean re-check with your sites still loading gets a signed, dated "fixed" result.
Terminal output of the PHP2Shell Emergency Fix: the server is found vulnerable, the paid order authorises the fix, the plan lists the PHP packages to update and says rollback is ready, the customer types YES, the backup is saved, the packages are updated, PHP-FPM is restarted, both website names still answer, the re-check shows PATCHED and a signed result link is printed.
A real Emergency Fix on an Ubuntu 24.04 test server running a live nginx and PHP-FPM site, with a paid order (package list shortened). PHP was Ubuntu's build from before the fix; the fix updated it to Ubuntu's patched build, restarted PHP-FPM, confirmed both site names still answered, and issued the signed result.
The signed result page: Fixed, signature valid, issued by Entidex Ltd, with the server, operating system, check and issue times, the report fingerprint, the PHP runtime after the fix, and before the fix 1 of 1 PHP runtime did not have the fix.
The signed result from that run. Anyone with the link can check it; it shows the server, the before and after state and the fingerprint of each report, but not your order number or any file paths.

PHP2Shell guides

PHP2Shell, answered

What is PHP2Shell?

PHP2Shell is the name for two critical PHP flaws, CVE-2026-109618 and CVE-2026-109619, fixed by the PHP project on 21 October 2026. Both let an attacker run code on a web server without logging in. It is sometimes written PHP 2 Shell or PHP Shell.

How do I check if my website is vulnerable to PHP2Shell?

Take the free three-question self-check on this page to see whether you need to act. To confirm on the server, run the free read-only PHP2Shell Check script, which reads every PHP installed and its package changelog. Online scanners cannot reliably tell from outside, because they cannot see distribution backports.

Is PHP2Shell being exploited?

Yes. Working PHP2Shell exploit code was public on 20 October 2026, before the fix, and security firms reported exploit attempts on 21 October 2026, the day the fix was released.

Is my WordPress site affected by PHP2Shell?

Yes, until the PHP underneath it is updated. The flaw is in PHP, not WordPress, so updating WordPress or plugins does not fix it. Many managed hosts patched within hours; self-managed servers and agency-run sites need checking.

Which PHP versions fix PHP2Shell?

PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. PHP 8.1, 8.0 and 7.4 are end of life and need a source patch or an upgrade. Linux distributions such as Ubuntu also ship backported fixes under older-looking version numbers.

I patched PHP but my server still shows as vulnerable. Why?

Usually PHP was not restarted, so the old code is still running, or the site uses a different PHP build from the one that was updated. Other causes are an update that did not install, PHP inside a container, or end-of-life PHP with no backport. The free check script spots each of these.

What does the NCSC say about PHP2Shell?

The UK National Cyber Security Centre advised organisations to update internet-facing systems that use PHP straight away, or take them offline until they can.

Does the free check script change anything on my server?

No. The PHP2Shell Check script is read-only. It reads package data, process data and file metadata and never installs, updates, restarts, deletes or edits anything. It only asks a PHP program for its version if root owns it and no other user can change it, so a program an attacker planted is listed, never run. Only run it on servers you own or are authorised to manage.

What does the Emergency Fix change on my server?

Only what it shows you first. It refreshes your package lists, asks your package manager exactly what the update would change, and lists every package, including anything PHP needs updated with it. It stops if the update would remove anything. Nothing changes until you type YES. Then it backs up your PHP settings, updates those packages, restarts PHP services only and checks your websites still load. Any other service still running old code is listed for you to restart yourself.

What happens if a website stops working after the fix?

Before changing anything, the fix saves your current PHP packages and tells you whether it can roll back. If a website that loaded before stops loading afterwards, it puts the old packages and settings back and restarts PHP, and you do not get a "fixed" result: we are told and contact you. Some systems, including Ubuntu, remove older security builds from their servers, so rollback is not always possible; the plan says so before you approve it.

Which servers does the Emergency Fix work on?

Linux servers where PHP comes from the system's own packages: Ubuntu and Debian (apt) and AlmaLinux, Rocky Linux and Red Hat (dnf). We test it on Ubuntu 24.04, Debian 12 and AlmaLinux 9 with a live site, including a site that breaks after the update. On cPanel, Plesk, LiteSpeed and DirectAdmin servers the panel manages PHP, so the fix stops before changing anything and we patch the server by hand under the same order. It doesn't change PHP that you compiled yourself or that runs inside containers: it tells you, and we help.

My server says PHP 8.3.33 (or 8.0.30). Is it still vulnerable?

Not necessarily. AlmaLinux, Red Hat, Ubuntu and Debian often add the PHP2Shell fix to an older version number. The free check reads your package's changelog as well as the version, so it can tell a patched 8.3.33 from an unpatched one.

Facts as published by the PHP project, CISA and the NCSC on 21 October 2026. Entidex Ltd, registered in England and Wales, company no. 17250646.