Is PHP on Windows affected by PHP2Shell?
Yes. PHP2Shell (CVE-2026-109618 and CVE-2026-109619) is a flaw in PHP itself, so any Windows server or PC running PHP below the fixed release for its branch is affected, whichever web server it uses. On IIS, PHP runs through FastCGI (php-cgi.exe), a web deployment that PHP’s security advisory tells admins to update. The fixed releases are:
| Branch | First fixed release |
|---|---|
| PHP 8.2 | 8.2.35 |
| PHP 8.3 | 8.3.36 |
| PHP 8.4 | 8.4.27 |
| PHP 8.5 | 8.5.12 |
| 8.1 and older | No new release; official source patches for 7.4, 8.0 and 8.1 |
How do I check which PHP version IIS uses?
Check the PHP that IIS actually calls, not just the command line. php -v in Command Prompt reports whichever php.exe comes first on your PATH, which may be a different copy from the php-cgi.exe in IIS. In IIS Manager, open Handler Mappings and look at the executable path for *.php; that folder is the PHP your site uses. From the web side, WordPress Site Health or a temporary php_sapi_name() page should report cgi-fcgi under IIS. Remove any test page afterwards. More methods are in the check PHP version guide.
Are fixed PHP builds for Windows available?
Yes. PHP published Windows builds of all four fixed releases on 21 October 2026, in the official Windows release folder. The old windows.php.net download page now redirects to php.net’s Windows downloads, which lists file sizes and SHA256 hashes. For IIS, the x64 Non Thread Safe files are:
| PHP branch | File (NTS, x64) | Compiler |
|---|---|---|
| 8.2 | php-8.2.35-nts-Win32-vs16-x64.zip | VS16 |
| 8.3 | php-8.3.36-nts-Win32-vs16-x64.zip | VS16 |
| 8.4 | php-8.4.27-nts-Win32-vs17-x64.zip | VS17 |
| 8.5 | php-8.5.12-nts-Win32-vs17-x64.zip | VS17 |
Thread Safe and x86 variants are in the same folder. PHP’s page says the builds need the Visual C++ Redistributable for Visual Studio 2015-2022. There are no new Windows files for 7.4, 8.0 or 8.1: the newest are from 2024 and 2025, before PHP2Shell.
How do I update PHP on Windows with IIS?
- Download the NTS x64 zip for the branch you already run, and compare its SHA256 with the value on php.net. Avoid zips from third-party mirrors or bundles.
- Extract it to a new folder, then copy over your
php.iniand check that any third-party extensions you load exist for the new build. - In IIS Manager, point the
*.phphandler mapping and the FastCGI setting at the new folder’sphp-cgi.exe. PHP’s IIS install page describes this mapping and shows how to script it with APPCMD. - Install the Visual C++ Redistributable if it’s missing.
Staying on the same branch (8.3.x to 8.3.36, for example) avoids application compatibility surprises. Moving up a branch is a separate project.
How do I restart IIS and verify the fix?
Restart IIS so no old php-cgi.exe process keeps running: in IIS Manager select the server node and click Restart in the Actions pane, or run iisreset /restart in an elevated prompt, as Microsoft’s IIS guide) describes. Restarting drops active sessions, so pick a quiet moment. Then load Site Health or your test page again and confirm the new version, and enter it in the PHP version checker. If you run Apache on Windows instead, it uses the Thread Safe build; restart the Apache service after swapping it.
What if I can’t update PHP on Windows yet?
Use PHP’s stopgaps in php.ini, such as turning off session.upload_progress.enabled and lowering post_max_size, then restart IIS. They block specific attack paths only. See the CVE-2026-109618 workaround for the full list and limits.
I still run PHP 7.4, 8.0 or 8.1 on Windows. What now?
PHP’s backports for 7.4, 8.0 and 8.1 are source patches only, and PHP published no Windows binaries of them. On Windows, the realistic fix is moving to 8.2 or later. Read PHP end of life for options, and use the PHP2Shell patch guide and the PHP2Shell checker to confirm where you stand. Using XAMPP or another bundle? See XAMPP PHP version.
Should I use the Thread Safe or Non Thread Safe PHP build on IIS?
Use Non Thread Safe (NTS). PHP's download page says NTS builds are for FastCGI, which is how IIS runs PHP, and Thread Safe builds are for Apache's module setup. It also recommends x64 builds.
Does Windows Update patch PHP2Shell?
No. PHP is a separate download from php.net, not part of Windows, so Windows Update doesn't manage it. You install the new PHP zip yourself, or wait for the vendor of a bundled stack to ship one.
Check your PHP for PHP2Shell
Enter the version your website reports. We compare it with the first fixed release for its branch and tell you what to do next.
PHP2Shell checker →Sources
The core facts on this page (fixed versions, CVE details, vendor packages and agency warnings) come from official sources. Research, news and community posts are labelled as such.
- Security advisory: Critical remote code execution vulnerabilities, update nowOfficial The PHP Group
- RCE via OOM corruptionOfficial The PHP Group
- RCE via stale global stateOfficial The PHP Group
- php_sapi_nameOfficial The PHP Group
- Site Health screenOfficial WordPress.org
- Windows releases directoryOfficial The PHP Group
- Downloads & Installation Instructions (Windows)Official The PHP Group
- Installation on Windows with IISOfficial The PHP Group
- Start or Stop the Web Server (IIS 8)Vendor Microsoft