Products and stacks · Local stacks and app servers
PHP2Shell in XAMPP: is it affected and how to fix it
How to check the PHP version XAMPP uses
Run the command for your setup. A version at or above 8.2.35, 8.3.36, 8.4.27 or 8.5.12 in its branch is fixed; older branches are fixed only by a vendor build that says so.
C:\xampp\php\php.exe -v
/opt/lampp/bin/php -vThe command-line php can differ from the PHP that serves the site. To be sure, check the web SAPI (a temporary phpinfo() page behind authentication, or the panel's PHP settings) and remove it afterwards. Our version checker compares a version number for you.
🔎 Got a version number? Paste it into the PHP2Shell checker →
How to fix PHP2Shell in XAMPP
- XAMPP is a development stack. If it is reachable from the internet or the LAN, stop Apache now or bind it to 127.0.0.1.
- Back up
C:\xampp\php, download the PHP 8.2.35 Thread Safe x64 zip from windows.php.net (the Apache module needs a Thread Safe build), unpack it into the php folder and copy yourphp.iniback. Stay on the 8.2 branch sophp8apache2_4.dllstill matches the Apache config. - Restart Apache from the XAMPP Control Panel and confirm the version with
php -vand a temporaryphpinfo()page. - For anything public, move to a maintained stack (distribution packages, Docker
phpimages or a patched panel). - If no vendor build exists, replacing the bundled PHP with an official fixed build of the same branch is the DIY route. Keep a backup of the old folder and your
php.ini. - Restart the web server and re-check the version the web SAPI reports.
Prefer to let an AI agent do the checks? Check if you are affected · Fix with an AI agent
If you cannot patch yet
- Set
session.upload_progress.enabled = 0where applications cannot override it (php.ini,php_admin_valuein the FPM pool or Apache config), and restart PHP. - On PHP 8.5, set
fatal_error_backtraces = 0. - PHP's interim advice also covers
memory_limitand a lowpost_max_size; follow the remediation page exactly, because these settings only reduce some paths. - Restrict access (VPN, IP allowlist) or take the service offline if it runs PHP 8.1 or older with no vendor backport. WAF rules help but are not a fix.
FAQ
Is XAMPP affected by PHP2Shell?
Likely affected: no vendor fix or statement found. XAMPP ships its own PHP. The newest Windows installer (November 2023) bundles PHP 8.2.12, and no XAMPP build with fixed PHP exists. Apache Friends has published no PHP2Shell statement.
Does updating XAMPP itself fix CVE-2026-109618 and CVE-2026-109619?
Only if the update contains fixed PHP. PHP2Shell is a flaw in the PHP interpreter, so what matters is the PHP that XAMPP runs on. Check the version after updating.
Which PHP versions fix PHP2Shell?
PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12, released 21 October 2026. PHP 8.1 and older get no release from the PHP project; only vendor builds with a backport (or a self-built source patch for 7.4, 8.0 and 8.1) fix them.
What if XAMPP has no fix yet?
Keep its PHP-based web interface off the internet (VPN or IP allowlist), apply PHP's interim settings such as disabling session upload progress, and install the vendor update as soon as it ships. Interim settings reduce risk but are not a fix.
Related products
- WampServerVendor fix available
- MAMP and MAMP PRONo vendor advisory
- LaragonNo vendor advisory
- Laravel HerdVendor fix available
- ServBayPartly fixed
- FrankenPHP and Laravel OctaneVendor fix available
← All products that bundle PHP
See also: Remediation by platform · Affected versions · Vendor status
Sources
- ma.ttias.be: how to apply the patches (package status)
- Mallory: PHP2Shell – am I affected? (product table)
- ApacheFriends/xampp-build issue #46 (no newer PHP builds)
- windows.php.net downloads
- PHP advisory GHSA-w8hw-w9fx-j79w
- PHP advisory GHSA-6wmf-4rv5-p3rp
Outbound links leave this site. We do not host exploit code.
Unofficial summary of public sources. This site is not affiliated with the vendor or the PHP project and hosts no exploit code.