PHP2Shell Checker
Use this free PHP2Shell checker to see whether your website runs a PHP version affected by PHP2Shell (CVE-2026-109618 and CVE-2026-109619). Enter your site address, or type the PHP version you see on your server.
Already know your PHP version? Paste it here (from php -v, phpinfo or your hosting panel):
PHP2Shell checker data last checked against the official advisory: October 21, 2026.
What the PHP2Shell checker tells you
PHP2Shell is a family of critical memory-safety vulnerabilities in core PHP, disclosed on October 21, 2026 with a CVSS score of 9.2. An attacker who needs no account can run code on the server or read sensitive process memory, such as passwords, session tokens, API keys and certificates. Because the bug is in the PHP engine, a site can be affected even when its own code is perfectly written. The researchers showed this with a plain "Hello World" app.
The PHP2Shell checker answers one question: is the PHP running your site older than the first fixed release? It reads what your server reveals in its headers. If the PHP version is visible, you get a direct verdict. If it is hidden, which is common, the PHP2Shell checker tells you whether the site looks like it runs PHP (WordPress, Drupal, Joomla, Laravel or a PHP session cookie) and points you to the one-minute server check.
PHP2Shell fixed versions
These are the vulnerable and first fixed releases per branch, from the official disclosure and the PHP Foundation announcement:
| PHP branch | Vulnerable | First fixed release |
|---|---|---|
| 8.5 | < 8.5.12 | 8.5.12 |
| 8.4 | < 8.4.27 | 8.4.27 |
| 8.3 | < 8.3.36 | 8.3.36 |
| 8.2 | < 8.2.35 | 8.2.35 |
| 8.1, 8.0, 7.4 and older | All releases | No new official release. Use a vendor package with the fix backported, or move to a fixed branch. |
Distribution packages (Ubuntu, Debian, Red Hat, CloudLinux, cPanel EasyApache) often backport the fix without changing the upstream version number. If your version looks old but comes from such a package, check the package changelog for CVE-2026-109618. Commands are on the PHP2Shell patch page.
How to use the PHP2Shell checker, or check by hand
- Find the PHP version that serves web requests. In WordPress go to Tools → Site Health → Info → Server. On a server, run
php -v, but note the command-line version can differ from the one Apache or PHP-FPM uses. - Enter it in the PHP2Shell checker, or compare it with the table above. On the 8.3 branch, for example, 8.3.35 is vulnerable and 8.3.36 is fixed.
- Check every runtime. Servers with cPanel, Plesk or aaPanel often have several PHP versions side by side. Each one that a site can use must be updated.
- Restart after updating. Apache, PHP-FPM and long-running PHP workers keep the old code in memory until they restart.
Who is affected by PHP2Shell
PHP runs roughly 70% of websites, including WordPress, Drupal, Joomla, MediaWiki, Moodle, Nextcloud, Laravel and Symfony apps. The researchers demonstrated unauthenticated remote code execution on the latest WordPress, Drupal and Joomla container images, but exploitation does not require any of those applications. According to the PHP Foundation, Apache with mod_php is the most exposed setup: an unauthenticated request can trigger CVE-2026-109618 before any application code runs, with default settings. Remote code execution was also confirmed on PHP-FPM through application-level code paths.
Run the PHP2Shell checker on every site you manage, not just the main one. Sites on managed platforms are only as safe as the PHP build the host runs. If you are on shared hosting, the fix is usually a version switch in your control panel or a ticket to support.
What to do if the PHP2Shell checker says you are vulnerable
- Update PHP to 8.2.35, 8.3.36, 8.4.27, 8.5.12 or later, or to a vendor package that includes the fix. This is the only complete remediation. Step-by-step commands: PHP2Shell patch guide. Then run the PHP2Shell checker again to confirm.
- If you cannot update today, apply the temporary measures from the advisory and keep your WAF rules on. They reduce some attack paths but not all of them: PHP2Shell mitigation.
- Look for signs of compromise on servers that were exposed, especially if they hold credentials or customer data, and rotate secrets that were in memory.
Beyond the PHP2Shell checker: fix guides
PHP2Shell checker FAQ
Short answers to what people ask most after running a PHP2Shell checker.
Is this PHP2Shell checker safe to run against my site?
Yes. It sends one ordinary GET request to your homepage, the same as a browser visit, and reads the response headers. It sends no exploit, no POST request and does not scan paths.
Why does the PHP2Shell checker say my PHP version is hidden?
Most servers turn off expose_php, so the version is not in the headers. That is normal and is not a sign that you are patched. Check the version on the server or in your hosting panel and type it into the version box.
My host shows PHP 8.3 with no patch number. Am I safe?
You cannot tell from the branch alone. Only 8.3.36 and later contain the fix on that branch. Ask your host: "Does your PHP build include the fixes for CVE-2026-109618 and CVE-2026-109619?"
I updated WordPress and all plugins. Am I protected?
No. The bug is in PHP itself, below WordPress. Updating an application does not update the PHP runtime that runs it. See PHP2Shell and WordPress.
Does a WAF or Cloudflare rule protect me?
Providers such as Cloudflare deployed temporary rules, but the official disclosure says not to treat a protective rule as a substitute for updating PHP. Coverage depends on the provider and the attack path.
I run PHP 7.4 or 8.1. Is there a patch?
There is no new official PHP release for 8.1 and older branches. Your options are a vendor package with the fix backported (check its changelog for the CVE IDs) or moving to 8.2.35, 8.3.36, 8.4.27 or 8.5.12.
How do I know if someone already exploited it?
The disclosure lists investigation signals: unusually large or malformed PHPSESSID cookies in responses, odd multipart requests followed by memory-limit errors or repeated HTTP 500s, and unexplained PHP worker crashes. None of these prove exploitation, and their absence does not prove safety.