Neelo Digital
Guide · Security

PHP2Shell and WordPress/WooCommerce: Patch Today, Then Move Off PHP to Shopify

PHP2Shell is a pair of critical flaws in the PHP runtime (CVE-2026-109618 and CVE-2026-109619, CVSS v4.0 9.2) that let attackers run code on a web server without logging in. Found by Wiz Research, they were fixed on 21 October 2026 in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. WordPress and WooCommerce run on PHP, so your store is exposed until the PHP on its server is patched; updating WordPress or plugins does not fix it. Patch today, then get off PHP for good: Neelo Digital moves WooCommerce stores to headless Shopify, where Shopify patches the platform and checkout and the JavaScript storefront has no PHP for you to patch.

Published · Last updated · 15 min read · By Neelo Digital

TL;DR

  • It's a PHP bug, not a WordPress bug. Two CVEs in the PHP runtime, rated CVSS v4.0 9.2. No WordPress, theme or plugin update fixes it; only a patched PHP build on your server does. Your host may already have patched, but WordPress can't tell you whether it has. Patch today, then ask why your store still depends on someone patching PHP at all.
  • Fixed versions: PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35, released 21 October 2026. Anything older than 8.2 gets no official release. PHP published only minimal source backports for 7.4, 8.0 and 8.1, so those need a host, Linux distribution or LTS-vendor build; older versions have nothing.
  • Check in two minutes: WordPress → Tools → Site Health → Info → Server. Then ask your host to confirm the PHP build includes the fixes.
  • It is being exploited. HKCERT, Hong Kong's national computer emergency response team, says both CVEs are being exploited in the wild, and Amazon Threat Intelligence saw an attempt on 17 October 2026, four days before the patches.
  • Your keys may already have leaked. One of the bugs lets attackers who haven't logged in read PHP worker memory, which can include payment-gateway and email-service API keys and admin passwords. After patching, not before, rotate them.
  • This won't be the last one. On WordPress, every PHP flaw, plugin hole and core bug is yours or your host's to patch. On Shopify, Shopify runs and patches the platform and checkout, and the headless storefronts we build run on JavaScript, with no PHP for you or your host to patch. See how we move stores over.

PHP2Shell at a glance

PHP2Shell key facts, as of 28 October 2026
CVEsCVE-2026-109618 and CVE-2026-109619
Affected softwareThe PHP runtime (PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, LiteSpeed); Wiz says every PHP version back to 5.4 is affected by at least one of the bugs
SeverityCVSS v4.0 9.2 (critical), rated by the PHP project; HKCERT rates it "Extremely High Risk"
ImpactRemote code execution without logging in, plus a memory leak that can expose passwords, tokens and API keys
Found byWiz Research (AI-assisted, with Calif and OpenAI)
Disclosed and fixed21 October 2026
Fixed inPHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35
No official fixPHP 8.1 and older (minimal source backports for 8.1, 8.0 and 7.4 only; nothing for older versions)
Exploited?Attempts confirmed (HKCERT; Amazon Threat Intelligence saw one on 17 October 2026); compromise at scale disputed
WordPress/WooCommerce update needed?No, according to reported WordPress.org and WooCommerce statements: update PHP
Interim mitigationServer configuration changes (see the workaround section); they reduce exposure but are not a fix

What is PHP2Shell (CVE-2026-109618 and CVE-2026-109619)?

PHP2Shell is the name for two flaws in the PHP language runtime, CVE-2026-109618 and CVE-2026-109619, that let an attacker run code on a web server without logging in. The PHP project rates both CVSS v4.0 9.2 (critical) and shipped emergency fixes on 21 October 2026 (BleepingComputer). The flaws are in PHP itself, independent of the application running on top of it, so any application on an affected PHP version can be vulnerable.

Wiz Research, which found the flaws, reported four separate bugs that PHP grouped under the two CVEs:

  • a use-after-free in session upload-progress handling;
  • an unauthenticated remote disclosure of PHP worker memory that works regardless of the application;
  • a use-after-free in fatal-error backtraces;
  • a type confusion in OPcache, PHP's shared code cache.

Wiz traces all four to how PHP handles fatal errors, especially running out of memory, part-way through a request: internal state can be left behind and reused by a later request on the same worker. Wiz says every PHP version released in the last decade is affected by at least one of them, back to PHP 5.4.

The PHP project's security advisorydescribes them like this:

  • CVE-2026-109618, RCE via out-of-memory corruption (GHSA-w8hw-w9fx-j79w): out-of-memory handling can interrupt PHP while internal request data is only partly initialised, and request cleanup may then treat that invalid data as valid.
  • CVE-2026-109619, RCE via stale global state (GHSA-6wmf-4rv5-p3rp): request-owned internal state can survive after its memory has been freed, and a later request on the same worker may use it before normal initialisation resets it.

Wiz demonstrated pre-authentication code execution against the wordpress:latest, drupal:latest and joomla:latest container images. Two of the four bugs, the upload-progress use-after-free and the OPcache type confusion, each gave Wiz pre-authentication code execution on WordPress. The applications aren't at fault: Wiz notes that even a simple "Hello World" application running on an affected PHP version can be vulnerable. Separately, the memory-disclosure bug can leak passwords, authentication tokens, API keys and certificates belonging to other requests or the server itself, without any code execution, and Wiz says it works even when the application never calls session_start(), which for a store can mean payment-gateway and email-service credentials.

Wiz's headline says PHP2Shell affects "70% of the Internet". Wiz bases it on PHP powering "70% of all websites in the world", which matches PHP's share of websites whose server-side language W3Techs can detect (70.8% on 15 July 2026; snapshots through 2026 range from roughly 69% to 72%). It is not a count of vulnerable or exploitable sites.

Don't confuse PHP2Shell with WP2Shell, a separate WordPress core flaw chain (CVE-2026-63030 and CVE-2026-60137) that was fixed in WordPress 6.9.5 and 7.0.2 in July 2026. If your WordPress core is current, WP2Shell is already dealt with. PHP2Shell is a different problem in a different layer.

Is WordPress or WooCommerce affected by PHP2Shell?

Yes, if the PHP running your site is below 8.5.12, 8.4.27, 8.3.36 or 8.2.35 on its branch, or is 8.1 or older, and your host hasn't backported the fix. WordPress and WooCommerce code is not the problem; the PHP runtime underneath them is, so updating WordPress, your theme or plugins does nothing for PHP2Shell. The fix is a PHP update on the server, usually your host's job.

According to reporting on WordPress.org's 21 October post ("Critical PHP Security Release"), WordPress.org said the issues are not specific to WordPress and that no WordPress update is required or planned; owners should update PHP. The WooCommerce developer blog, as reported, said the same for WooCommerce, and that self-hosted stores must confirm with their host that PHP is patched. It also said stores on Automattic's own hosting (WordPress.com, WordPress VIP, Pressable, WP Cloud) are already protected. That is Automattic's own claim.

Which PHP setups are at risk? Published advisories list the ways PHP commonly serves web requests: PHP-FPM, Apache mod_php, php-cgi, FrankenPHP and LiteSpeed, with mod_php described as the highest-risk case. PHP-FPM, the most common setup behind WordPress hosting, is on the PHP project's list of at-risk setups; PHP rates mod_php as the highest-risk case because its demonstrated exploit triggers before any application code runs. Treat every web-facing PHP install as in scope.

Affected versions are every PHP branch before the fixed releases below. Your host may already have patched, but WordPress can't show you whether it has: a backported build can keep the old version number. Until your host confirms the build, assume you're exposed. Self-managed servers and sites on PHP older than 8.2 are the most at risk.

Fixed PHP versions for PHP2Shell (CVE-2026-109618 and CVE-2026-109619), as of 28 October 2026
PHP branchFirst fixed releaseWhat to do
8.58.5.12 (21 Oct 2026)Update to 8.5.12 or later
8.48.4.27 (21 Oct 2026)Update to 8.4.27 or later
8.38.3.36 (21 Oct 2026)Update (8.3.35 and earlier are vulnerable)
8.28.2.35 (21 Oct 2026)Update to 8.2.35 or later, and plan a move to 8.3+: 8.2 reaches end of life on 31 December 2026
8.1No official release (end of life since 31 December 2025)Ask your host for a backported build; move to 8.3 or newer
8.0 and 7.4No official release (end of life; minimal source backports only)Ask your host for a backported build; move to 8.3 or newer
5.4 to 7.3No official releaseMove to a supported branch

A host or Linux distribution can backport the fix without changing the version number, so an older-looking version may be patched. Ask your host to confirm the build includes the fixes for CVE-2026-109618 and CVE-2026-109619; a build dated 21 October 2026 or later is a useful sign, not proof. On Windows servers, PHP also published rebuilt packages on 26 October (8.5.12-1, 8.4.27-1, 8.3.36-1 and 8.2.35-1; same PHP source, bundling Brotli 1.2.1) that fix a separate Brotli flaw, CVE-2026-111497. It is only reachable through the cURL extension with automatic HTTP response decompression enabled, which is off by default; take the -1 build anyway (PHP project).

How do I check and patch PHP2Shell on WordPress or WooCommerce?

Check your PHP version in WordPress under Tools → Site Health → Info → Server. If it is below 8.5.12, 8.4.27, 8.3.36 or 8.2.35 on its branch, it needs patching. Either way, ask your host to confirm the PHP build includes the fixes. Who installs the update depends on who manages PHP: your host on managed or shared hosting, you on a self-managed server.

Step 1: find your PHP version

  1. Log in to WordPress admin (5.2 or later) and open Tools → Site Health.
  2. Open the Info tab and expand Server. The PHP version is listed there (WP Engine's guide has screenshots).
  3. Compare it with the fixed versions in the table above. The patch number matters: 8.3.35 is vulnerable, 8.3.36 is fixed.

One catch: Site Health shows the version number, not the build date. Ignore the green 'recommended' label on the Site Health Status tab as well. It reflects WordPress's general PHP support policy, not PHP2Shell, so an unpatched 8.3 or 8.4 build can still show as recommended (PCrisk and eSEOspace both flag this). Some shared hosts (for example on CloudLinux) and Linux distributions backport fixes without changing the number, so an older-looking version may be patched, and you can't tell from WordPress alone. For example, Ubuntu's patched packages keep the original version number, so a patched Ubuntu 24.04 server can still report PHP 8.3.6. On Ubuntu and Debian servers, the package changelog lists the CVE IDs when the fix is installed (ComputingForGeeks and DevToolLab explain). Where you have server access, the built: line in php -v, or phpinfo(), shows the build date (ComputingForGeeks walks through it). Otherwise, ask your host.

Step 2: patch according to your hosting type

  • Automattic hosting (WordPress.com, VIP, Pressable, WP Cloud): WooCommerce says these stores are already protected (Automattic's own statement); nothing for you to install.
  • Managed WordPress hosting: the host patches the PHP binary. Kinsta, for example, says it applied the update at hosting level and customers need do nothing. Check your host's status page or announcement, and if there isn't one, ask.
  • Shared hosting: the host patches PHP. Timelines vary between hosts, so ask directly, and if your control panel lets you pick a PHP version, choose 8.3 or newer (8.2 is still patched but reaches end of life on 31 December 2026).
  • Self-managed VPS or cloud server, including panels like Forge, RunCloud, Ploi or ServerPilot where you own the operating system: you patch it. Update PHP from your package source, then restart PHP-FPM or Apache so every worker loads the new binary. Laravel Forge's knowledge base covers the Forge side.

An email you can send your host

Hi, my site [domain] runs WordPress/WooCommerce on PHP [version from Site Health]. Please confirm whether the PHP build serving my site includes the fixes for PHP2Shell (CVE-2026-109618 and CVE-2026-109619), i.e. PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or a backported build dated 21 October 2026 or later. If not, when will it be patched, and what mitigations are in place until then? Thanks.

Open this email in your mail app

If your Site Health version is below 8.3, also ask your host to move you to 8.3 or newer: 8.2 got the fix but reaches end of life on 31 December 2026. Test the upgrade on a staging copy first; older plugins sometimes break on newer PHP.

Step 3: after patching, rotate sensitive keys

Because the memory-disclosure bug can leak passwords, tokens and API keys from other requests, rotate the secrets your store holds once PHP is patched, not before (a key rotated on a vulnerable server can leak again). Start with payment-gateway API keys, email-service keys, admin and hosting passwords, and the WordPress security keys and salts in wp-config.php. Regenerating the salts logs everyone out. (Skycloak and Safeguard cover post-patch steps in more depth.)

Is there a PHP2Shell workaround if I can't patch yet?

Not a complete one. The PHP project says \"there are no complete mitigations, updating is the only safe choice\", but it lists interim measures that reduce exposure to specific attack paths: for CVE-2026-109619, set session.upload_progress.enabled=0 (and fatal_error_backtraces=0 on PHP 8.5); for CVE-2026-109618, set memory_limit=-1 administratively with a container or cgroup memory limit, keep post_max_size low and enforce request limits at the web server. PHP is explicit that these do not make an installation safe; only updating PHP does. They need server-level access, so on shared hosting this is a request to your host, not something you set in WordPress. Forward this section to your host or developer.

Based on the PHP project's advisories, which list separate interim measures for each CVE:

  • For CVE-2026-109619: set session.upload_progress.enabled=0 (and on PHP 8.5, fatal_error_backtraces=0) in php.ini, the FPM pool (for example via php_admin_flag) or the web server config, so that it applies before PHP parses the request. PHP says not to rely on ini_set() or an FPM .user.ini for this. Then restart every PHP worker. PHP is explicit about the limits: disabling upload progress "blocks the confirmed session paths but not other variants", and the backtrace setting blocks "the confirmed fatal backtrace path only". It also advises removing invalid or deprecated per-request settings that emit diagnostics before initialisation (hiding those diagnostics with error_reporting, display_errors or @ does not help), and fixing attacker-reachable fatal errors and execution timeouts. Wiz's table groups the four underlying bugs under the two CVEs differently; the per-CVE grouping here follows PHP's own advisories, since PHP publishes the fixes.
  • For CVE-2026-109618: the advisory lists setting memory_limit=-1 administratively (for example php_admin_value in the FPM pool or Apache config), making sure no pool, directory or application setting overrides it back to a finite value, keeping post_max_size low (8M if you don't accept uploads, 32M if you do) with upload_max_filesize below it, and enforcing limits on decoded request size, input field count, multipart part count, header count and nesting depth at the web server or proxy, including for requests without a usable Content-Length. An unlimited PHP memory limit lets a single request use as much memory as it can, so only apply it together with a container or cgroup memory limit, which acts as the availability boundary and kills only the affected worker. PHP says not to substitute RLIMIT_AS or RLIMIT_DATA for that container or cgroup limit.

If your site is behind Cloudflare, its WAF managed rules have included PHP2Shell protections by default since 21 October 2026, including on the free plan (PPC Land reported the same). Paid-plan customers should confirm the Managed Ruleset is deployed in Block mode. Cloudflare itself says this is defence in depth, not a substitute for updating PHP.

One more point that applies after you patch: on 23 October the PHP project published an informational advisory suggesting you keep session.upload_progress.enabled=0 until the next regular bugfix release (the advice came after the 21 October releases, so it applies to fixed versions too), "to fully protect from an unlikely RCE vector". PHP says it is unlikely in practice: it needs session.serialize_handler set to php_binary or php_serialize in config, then switched to php with ini_set() before session_start(), with upload progress enabled. PHP will publish the full advisory for CVE-2026-115560 with that release.

Has PHP2Shell been exploited?

Yes, exploitation attempts are confirmed. HKCERT, Hong Kong's national computer emergency response team, says both CVE-2026-109618 and CVE-2026-109619 are being exploited in the wild, and Amazon Threat Intelligence saw an attempt on 17 October 2026, four days before the patches.

HKCERT's 22 October bulletin rates the issue "Extremely High Risk". Amazon Threat Intelligence reported that its honeypots saw an exploitation attempt on Saturday 17 October, four days before the patches, followed by more attempts around disclosure.

On confirmed break-ins the picture is less clear, and as of 28 October 2026 it was still disputed. Recorded Future says reporting doesn't establish successful compromise at scale. Sansec has said mass exploitation looks less likely than first feared, and Beazley said it was not aware of confirmed mass exploitation. None of that is a reason to wait: attempts are real, and a store taking payments is a worthwhile target.

Because these attacks happen below WordPress, your WordPress logs may show little. Wiz lists the signs to pass to your host or developer: unusual multipart requests followed by memory-limit errors or repeated HTTP 500 responses, unexpectedly large or malformed PHPSESSID response cookies, and unexplained PHP worker churn. Ask your host or developer to check logs from 17 October 2026 onwards, the date of the earliest exploitation attempt Amazon reported, not just from the patch date. Wiz is clear that applying the PHP update is the only complete fix.

PHP2Shell timeline

  1. 19–24 August 2026: Wiz finds the first bug, confirms code execution against Drupal and WordPress, and reports to the PHP security team (acknowledged 21 September) (Wiz).
  2. 17 October 2026: Amazon Threat Intelligence honeypots see an exploitation attempt, four days before the patches.
  3. 20 October 2026: PHP gives advance notice of a critical security release, both flaws rated CVSS v4.0 9.2.
  4. 21 October 2026: PHP releases 8.5.12, 8.4.27, 8.3.36 and 8.2.35 (8.6.0 RC4, for testing only, also has the fixes); Wiz Research publishes PHP2Shell; WordPress.org posts "Critical PHP Security Release".
  5. 22 October 2026: HKCERT's bulletin rates the issue "Extremely High Risk" and reports exploitation in the wild.
  6. 23 October 2026: PHP's informational advisory suggests keeping session.upload_progress.enabled=0 until the next bugfix release; full advisory for CVE-2026-115560 to follow.
  7. 26 October 2026: PHP publishes rebuilt Windows packages (8.5.12-1, 8.4.27-1, 8.3.36-1, 8.2.35-1) bundling Brotli 1.2.1 for a separate Brotli flaw, CVE-2026-111497.
  8. 28 October 2026: Facts in this article last checked.

Who is responsible for patching PHP on a WooCommerce store?

On self-hosted WooCommerce, someone, either your host or you, has to keep WordPress, plugins and the server software underneath them patched. PHP2Shell shows that the layer under WordPress can need an emergency patch too, and that patch only lands if your host does it or you do.

And it won't be the last time. For a WooCommerce owner, this is a bill that comes back every time PHP, a plugin or WordPress core needs an urgent fix. WebToffee describes the split: managed hosts usually patch PHP for you, and owners of self-managed servers patch it themselves. Three things make that burden grow over time:

  • PHP versions expire. PHP 8.1 reached end of life on 31 December 2025 , and the PHP project has made no official releases for it since; for PHP2Shell it published only minimal source backports. Sites on any PHP older than 8.2 got no official PHP2Shell release. Staying current means planned PHP upgrades, and testing your plugins against each one.
  • Plugins are their own attack surface. Separate from PHP2Shell, CVE-2026-27540 in the third-party WooCommerce Wholesale Lead Capture plugin was exploited to upload PHP webshells; it is fixed in version 2.0.3.2.
  • Core needs patching too. WP2Shell, a separate WordPress core flaw unrelated to PHP2Shell, was fixed in WordPress 6.9.5 and 7.0.2 in July 2026. WordPress is patchable, but someone has to apply the patches.

You can keep paying that cost every year: the emergency patches, the PHP upgrades that break plugins, the plugin flaws, the late-night emails to your host. Or you can stop owning that layer altogether. That is what a move from WordPress to Shopify does.

Does moving to Shopify remove PHP patching?

Yes, for your store. Shopify runs and patches its hosted platform and checkout, so a Shopify store has no PHP runtime of its own for you or your host to patch. When the next PHP flaw lands, there's no server of yours to patch; the short list that does stay with you is below.

Shopify's core platform is built on Ruby on Rails, not PHP; its GitHub organisation lists Ruby as its top language, and Shopify Engineering describes the Rails monolith. Shopify states it is PCI DSS Level 1 certified and that stores on its platform are covered by that certification for the infrastructure Shopify runs (hosting, cart, checkout). It also runs a public bug bounty with rewards of up to $200,000, paying outside researchers to find flaws before attackers do. Shopify had not published a PHP2Shell advisory as of 28 October 2026.

Headless Shopify: no PHP in your storefront

Every eCommerce store we build is headless Shopify: Shopify runs products, orders and checkout, and the storefront your customers see is a custom front end built in JavaScript (TypeScript on TanStack Start). There is no PHP runtime in the storefront we build or on any server you run, so PHP2Shell gives you nothing to patch, and the next PHP flaw won't be your emergency either. You also get a faster storefront, because it loads only what your store uses instead of a WordPress theme plus every script your plugins inject into it.

No platform is unhackable, Shopify included. What changes is who carries the risk. On WooCommerce, the whole stack is yours to keep patched. On Shopify, a short list stays with you, and we set it up properly at launch:

  • Apps. Third-party apps run on their developers' servers, and some are built in PHP (Shopify publishes an official shopify/shopify-app-php library). We keep app lists short and vetted, and you can ask your app vendors whether they've patched.
  • Staff accounts and access. Least-privilege permissions, no leftover staff or agency logins, and two-step authentication for everyone.
  • Scripts you add. Anything added to the storefront or checkout is vetted before it goes live. Shopify's PCI certification doesn't cover third-party scripts or apps, and you still complete your own Self-Assessment Questionnaire.
  • Your storefront code. The headless front end runs on JavaScript, not PHP, so PHP2Shell doesn't apply to it. Its code libraries and hosting still get security updates, like any software: on a Neelo maintenance plan we keep them current for you; without one, they're yours or your developer's to update.
  • Any WordPress you keep. If you keep a WordPress blog alongside the store, it still runs PHP and still needs patching, or we move the content too.

That short list is part of every build we ship, not something you work out alone. See how we build headless Shopify stores, or get a plan to move your WordPress store to Shopify.

Should you move from WooCommerce to Shopify after PHP2Shell?

Yes, if you don't want to keep owning server, PHP and plugin patching. Patch PHP today, because your current site keeps trading while the new store is built, then plan the move to Shopify. PHP2Shell is the latest reminder, not the first, that running WooCommerce means owning a stack of server software, plugins and core updates that someone has to keep patched, on someone else's timeline.

It's time to move if any of these sound familiar:

  • This week, you weren't sure who was responsible for patching PHP on your store.
  • You're on a self-managed server, or a shared host that was slow to patch, with no developer on retainer.
  • Your store is stuck on an end-of-life PHP version because a theme or plugin breaks on 8.2+.
  • You've been hit by a plugin flaw, a WordPress core update that broke checkout, or a slow, plugin-heavy store that costs you sales.
  • You'd rather spend time on products and marketing than on server maintenance.

What moving has done for stores like yours

These are WooCommerce stores we moved to Shopify, with results checked against their own analytics and Shopify data on 27 October 2026:

  • MaxFit SA: online revenue up 145% in the seven months after launch versus the seven months before (April–October 2026 against September 2025–March 2026), with average order value up 50% (GA4 and Shopify).
  • RCVR Electrolytes: monthly online sales up 6× on the new Shopify store, from its first full month (March 2026) to September 2026, with orders growing from 4 to 28 a month (Shopify).
  • Binuns: organic search revenue up 165% since the new store launched (20 April–26 October 2026 against the same period in 2025), with total online revenue up 12% year on year (GA4).

How we move a WooCommerce store to Shopify

The real risk in a migration is losing search traffic or customer data. Our process is built around protecting both:

  1. Patch PHP on your current site first. It stays live and earning until cutover.
  2. Export every URL on the old site and map each one to its new Shopify URL.
  3. Migrate products and variants, customers and order history.
  4. Plan subscriptions and stored payment methods separately; they need their own process.
  5. Replace each plugin with a Shopify feature, a vetted app or custom code in the storefront.
  6. Build the headless storefront, then set up 301 redirects, least-privilege staff accounts and two-step authentication before launch.
  7. Handle customer and order export files securely, and delete them once the import is checked.
  8. Send customers account activation emails so they can sign in to the new store.
  9. Decommission the old WordPress site, or keep it patched if it stays online, and remove old admin and agency accounts.

What to budget for, against what you pay now: today that's hosting, premium plugins and security tools, and developer time for PHP, WordPress and plugin updates. On Shopify, it's a monthly Shopify plan and any paid apps, hosting for the headless storefront, payment fees (with extra transaction fees if you use a gateway other than Shopify Payments; check Shopify's pricing for your country), and the one-off cost of the migration. Server patching drops off your list. Shopify's URLs follow their own pattern, which is why every old URL gets a 301 redirect.

Ready to stop patching PHP? Get a migration plan for your store: we'll map every URL, your products, customers and order history, and a Shopify replacement for each plugin. For larger catalogues, see our WooCommerce-to-Shopify migration service.

Sources

Every security fact and figure in this article comes from the sources below, last checked on 28 October 2026. The PHP facts (fixed versions, CVE descriptions, affected setups, mitigations) were checked against the PHP project's own advisories on 28 October 2026. The WordPress.org and WooCommerce statements are paraphrased from secondary reporting. This is a developing story: check the PHP project's advisories and your host's status page for the latest position.

Share this guide

Frequently asked questions

What is PHP2Shell?

PHP2Shell is the name for two critical flaws in the PHP runtime, CVE-2026-109618 and CVE-2026-109619, that let an attacker run code on a web server without logging in. The PHP project rates both CVSS v4.0 9.2 and released fixes on 21 October 2026. The flaws are in PHP itself, not in WordPress or WooCommerce.

What are CVE-2026-109618 and CVE-2026-109619?

They are the two CVE IDs for PHP2Shell, critical flaws in the PHP runtime found by Wiz Research that allow remote code execution without logging in. The PHP project rates them CVSS v4.0 9.2 and fixed them on 21 October 2026 in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. Updating PHP is the only complete fix.

Is WordPress affected by PHP2Shell?

Yes, if the PHP running your site is below the fixed release on its branch (8.5.12, 8.4.27, 8.3.36 or 8.2.35) and your host hasn't backported the fix. WordPress's own code isn't the problem, so updating WordPress doesn't help. Check Tools → Site Health → Info → Server, then ask your host to confirm the PHP build.

Is my WooCommerce store affected by PHP2Shell?

Yes, if your PHP is below the fixed release on its branch (8.5.12, 8.4.27, 8.3.36 or 8.2.35) or on any version below 8.2, unless your host or Linux distribution has backported the fix. Ask them to confirm. PHP2Shell is a flaw in PHP, not in WooCommerce. Your host may have patched already; ask them to confirm the build, because Site Health can't tell you. Self-managed servers and sites on end-of-life PHP are the most exposed. Check Site Health, then confirm with your host.

Is PHP-FPM affected by PHP2Shell?

Yes. The PHP project lists PHP-FPM, the most common setup behind WordPress hosting, among the setups at risk, alongside Apache mod_php, php-cgi, FrankenPHP and LiteSpeed. PHP rates mod_php as the highest-risk case because its demonstrated exploit triggers before any application code runs. Every web-facing PHP install should be treated as in scope.

Do I need to update WordPress for PHP2Shell?

No. WordPress.org and WooCommerce have said, according to published reports, that no update of their own is required or planned. Updating WordPress, themes or plugins does not fix PHP2Shell. The fix is updating PHP on the server, which your host does on managed or shared hosting and you do on a self-managed server.

Can a WordPress security plugin like Wordfence fix PHP2Shell?

No. PHP2Shell is a flaw in the PHP runtime underneath WordPress, so no plugin can patch it, just as updating WordPress, themes or plugins does not. A firewall in front of the server can reduce exposure while you patch, but the only complete fix is a patched PHP build on the server.

How do I check my PHP version in WordPress?

In WordPress 5.2 or later, go to Tools → Site Health → Info and expand the Server section. Site Health shows the version number but not the build date, so if your host backports fixes without changing the number, ask them whether your PHP build includes the fixes. A build dated 21 October 2026 or later is a useful sign, not proof.

What PHP version fixes PHP2Shell?

PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35, all released on 21 October 2026, or later releases on those branches. PHP 7.4, 8.0 and 8.1 are end-of-life and got no official release, only minimal source backports, so sites on them should move to 8.3 or newer (8.2 is fixed but reaches end of life on 31 December 2026).

How do I mitigate PHP2Shell without updating PHP?

You can only reduce exposure; updating PHP is the only complete fix. Interim measures include session.upload_progress.enabled=0 (and fatal_error_backtraces=0 on PHP 8.5) for CVE-2026-109619, and an administrative memory_limit=-1 with a container memory cap, low post_max_size and web-server request limits for CVE-2026-109618. A WAF such as Cloudflare's can add cover. These need server access, so ask your host.

Do I need to restart anything after updating PHP for PHP2Shell?

Yes, on a server you manage. Restart PHP-FPM or Apache so every PHP worker loads the patched binary; old workers keep running the vulnerable code until they restart. On managed or shared hosting your host handles this.

What should I do after patching PHP2Shell?

Rotate the secrets your store holds, because the memory-disclosure bug can leak passwords, tokens and API keys: payment-gateway and email-service API keys, admin and hosting passwords, and the WordPress salts in wp-config.php. Ask your host to review logs from 17 October 2026 onwards.

What is the difference between PHP2Shell and WP2Shell?

PHP2Shell (CVE-2026-109618 and CVE-2026-109619) is a flaw in the PHP runtime underneath WordPress, fixed by updating PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35. WP2Shell (CVE-2026-63030 and CVE-2026-60137) was a separate flaw chain in WordPress core, fixed in WordPress 6.9.5 and 7.0.2 in July 2026. A current WordPress install is protected from WP2Shell but can still be exposed to PHP2Shell.

Is Shopify affected by PHP2Shell?

Not in the way WordPress and WooCommerce stores are. Shopify's core platform is built on Ruby on Rails, and Shopify runs and patches its hosted platform and checkout, so merchants have no PHP runtime of their own to patch. Shopify had not published a PHP2Shell advisory as of 28 October 2026. Headless Shopify storefronts like the ones Neelo Digital builds run on JavaScript, not PHP. Merchants can still be exposed through third-party apps built in PHP or a companion WordPress site.

Does a headless Shopify store run on PHP?

No, not the ones Neelo Digital builds. Shopify runs the commerce backend and checkout on its own platform, and the storefront is a custom JavaScript front end (TypeScript on TanStack Start). There is no PHP runtime in the storefront or on any server you run, so there is no PHP for you or your host to patch. No platform is unhackable; apps, staff accounts, any scripts you add and the storefront's own code libraries still need managing, which a Neelo maintenance plan covers.

Has PHP2Shell been exploited?

Yes, exploitation attempts are confirmed. Hong Kong's national CERT (HKCERT) says both CVE-2026-109618 and CVE-2026-109619 are being exploited in the wild, and Amazon reported an exploitation attempt on 17 October, before the patches. Whether sites have been compromised at scale is disputed, but attempts are confirmed, so patch now.

What if my host is still on PHP 7.4 or 8.1?

Ask to move to PHP 8.3 or newer on a fixed release (8.2 is fixed but reaches end of life on 31 December 2026). PHP 8.1 reached end of life on 31 December 2025, and nothing older than 8.2 got an official PHP2Shell release. Until you move, ask your host to apply the PHP project's interim mitigations, and test the upgrade on a staging copy first.

Should I move from WooCommerce to Shopify for security?

Yes, if you don't want to keep owning server, PHP and plugin patching. Patch PHP today first, because your current site keeps trading while the new store is built. On Shopify, Shopify patches the platform and checkout, and a headless storefront built in JavaScript has no PHP to patch. You still manage apps, staff accounts, two-step authentication, storefront updates (or we handle them on a maintenance plan) and your own PCI questionnaire. Neelo Digital moves WooCommerce stores to Shopify with every URL redirected and order history intact.

Patch today. Then stop owning PHP.

We move WordPress and WooCommerce stores to headless Shopify: no PHP for you to patch, every old URL redirected, order history intact. MaxFit SA, a WooCommerce store we moved, grew online revenue 145% in the seven months after launch compared with the seven months before (GA4 and Shopify).

Contact us

Your next move should feel impossible to ignore.

Chat with a real person — no forms, no spam. Tell us what you are building and we will take it from there.

Reach Us Directly

Prefer email or a call? Drop us a line — a real human responds within one business day.

Response Time

Under 1 business day

Most enquiries get a reply within 24 hours.

Start a project in our live chat

Tap the chat button in the bottom-right corner of the page. Tell us what you're building and a real person from Neelo Digital will reply within one business day.

See our Privacy Policy and Terms & Conditions.