Is your PHP patched yet?
-
GET https://shop.example/X-Powered-By:PHP/8.3.12Not fixed PHP 8.3 is fixed in 8.3.36.
-
GET https://blog.example/X-Powered-By:PHP/8.4.27Fixed release The header reports a fixed release.
-
GET https://forum.example/X-Powered-By:PHP/8.3.6Check the package Ubuntu 24.04 ships a fixed build with this number: 8.3.6-0ubuntu0.24.04.13.
-
GET https://store.example/X-Powered-By:(not sent)Cannot tell Version hidden. That proves nothing. Ask your host.
PHP2Shell is two critical flaws in PHP itself (CVE-2026-109618 and CVE-2026-109619), fixed on 21 October 2026. Enter your site and we read what it tells the public. One ordinary request. No attack traffic.
Checking your site. Most sites answer in a few seconds.
- Verify
- Resolve
- Request
- Read
Active scan running. It can take up to 35 seconds. Keep this page open.
Your report is ready
Normal check: what your site shows the public
The site redirected to another host: . The checker does not follow redirects to other hosts.
The address is in the form above. Complete the human check again, then press Check my site.
Do this now
Versions reported
What we saw
Context
PHP signals
Keep this result
A public check cannot see vendor backports, hidden versions or every server behind this URL.
Active scan: test requests to your site
Findings
Limits of this scan
Keep this result
Know your version? Type it.
Or try one of these:
Nothing leaves your browser. It uses the same rules as the site checker, dated 22 October 2026.
Not fixed
PHP 8.3 is fixed in 8.3.36.
Install 8.3.36 or a later 8.3 release. Security support for PHP 8.3 ends on 31 Dec 2027.
What the check does
First,
a human check.
Turnstile and rate limits come before anything else. You can start 10 checks a minute, and each site can be checked once every 10 minutes by everyone together.
Then we look up
the address.
DNS goes through Cloudflare’s resolver. If the name points to a private or internal address, the check stops there.
Then one
ordinary request.
A normal GET for the page you entered, with at most two redirects on the same site. No payloads, no uploads, no extra paths.
Last, we read,
then forget.
We read the status, a few headers, cookie names and page markers. The page body and the website address you entered are not stored.
Before the check
- Human check
- Passed
- Your checks
- 1 of 10 this minute
- shop.example
- Next check in 10 minutes
DNS over HTTPS, Cloudflare
shop.example A93.184.215.14publicshop.example AAAA2606:2800:21f:cb07::1publicintranet.example A10.0.0.5private, check stops
The request, in full
GET / HTTP/1.1
Host: shop.example
User-Agent: PHP2Shell-Exposure-Checker/2.0
(+https://php2shell.fyi/about; passive, one GET)
Accept: text/html
Accept-Encoding: identity
What we keep from the answer
- Status
200- X-Powered-By
PHP/8.3.12- Cookie names
PHPSESSID- Page markers
/wp-content/- Stored after
- Nothing
Every branch has a next step
$ php -v
PHP 8.3.36 (cli) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.36, Copyright (c) Zend Technologies
$ php-fpm8.3 -v
PHP 8.3.12 (fpm-fcgi) (NTS)
| Branch | Install | Note |
|---|---|---|
| PHP 8.5 | 8.5.12 | Supported to 31 Dec 2029 |
| PHP 8.4 | 8.4.27 | Supported to 31 Dec 2028 |
| PHP 8.3 | 8.3.36 | Supported to 31 Dec 2027 |
| PHP 8.2 | 8.2.35 | Supported to 31 Dec 2026 |
| 8.1, 8.0, 7.4 | No release | Ask your vendor |
| 7.3 and older | No fix | Upgrade |
| PHP 8.6 | 8.6.0RC4 | Not for production |
| Ubuntu 24.04 | 8.3.6-0ubuntu0.24.04.13 | php8.3 package |
| Ubuntu 22.04 | 8.1.2-1ubuntu2.28 | php8.1 package |
| Debian 13 | 8.4.27-1~deb13u1 | php8.4 package |
| Debian 12 | 8.2.35-1~deb12u1 | php8.2 package |
A later release in the same branch also has the fix. PHP 8.1, 8.0 and 7.4 get source backports only, no release. Source: the php.net advisory of 21 October 2026 and the vendor trackers. Every branch and distribution: fixed versions and Linux packages.
Where to find PHP on your platform
Tools › Site Health › Info › Server shows the PHP version. Updating WordPress, plugins or themes does not change PHP. Read the WordPress guide.
cPanel: MultiPHP Manager shows the branch only, so confirm the exact build. Plesk: Websites & Domains shows the PHP version on each domain card. Read the cPanel and Plesk guide.
All 15 platform guides, including MediaWiki, phpMyAdmin, Plesk, DirectAdmin and aaPanel.
Questions
Does updating WordPress fix it?
No. The flaw is in PHP itself. WordPress core, plugins and themes run on PHP but do not change it. Update PHP, or ask your host to. See the WordPress guide.
My site hides its PHP version. Am I fine?
Not necessarily. Hidden is not fixed: expose_php=0 only removes the header. Ask your host which PHP build serves the site.
Is PHP-FPM behind nginx affected?
Yes. php.net names PHP-FPM as at risk, and remote code execution was shown on PHP-FPM for CVE-2026-109619.
Does a WAF or Cloudflare cover me?
It reduces the risk for traffic that passes through it. Requests sent straight to your server skip it, so lock the origin to your CDN, and update PHP anyway.
What does the checker send to my site?
One ordinary GET request, and at most two redirects on the same site. Its User-Agent names php2shell.fyi. The optional active scan sends test requests, only when someone starts it. To opt out, see what the checker sends.
Why one check per site every ten minutes?
To protect sites from repeated checks. The limit counts all users together, so someone else may have checked your site a moment ago.