Do not wait for 8.6 to fix PHP2Shell
PHP 8.6 has not been released. Its newest build is a release candidate, and the PHP project says such builds are for testing and not for production.
The fixed releases you can install today are 8.5.12, 8.4.27, 8.3.36 and 8.2.35. For most sites the right move is 8.4. See which version to pick. The advisories list affected branches 8.2 to 8.5 only. We have not verified whether the 8.6 release candidates carry the PHP2Shell fixes, and you should not run a release candidate on a live site to find out.
Release date
The PHP project's release page for 8.6 on wiki.php.net, last edited 21 Oct 2026, lists general availability (GA) on 19 Nov 2026. That matches the date in our notes. It is a planned date. Nothing is final until php.net announces the release.
| Date | Milestone | State on 22 Oct 2026 |
|---|---|---|
| 2 Jul to 30 Jul 2026 | Alpha 1 to 3 | Released |
| 13 Aug to 10 Sep 2026 | Beta 1 to 3 | Released |
| 22 Sep 2026 | Hard feature freeze | Passed |
| 24 Sep 2026 | RC2 (RC1 was skipped) | Released |
| 8 Oct 2026 | RC3 | Released |
| 21 Oct 2026 | RC4 | Released |
| 5 Nov 2026 | RC5 | Planned |
| 19 Nov 2026 | GA | Planned |
The wiki says the soft feature freeze came with Beta 1 on 13 Aug and the hard freeze on 22 Sep, after which features need release manager approval. So the feature set is essentially settled. The php.net pre-release page lists 8.6.0RC4, dated 21 Oct 2026.
Support dates for 8.6 are not published yet. The PHP project's supported versions page does not list 8.6. Its stated policy is two years of active support, then two more years of security fixes only, but we do not print dates for 8.6 until the project does.
What is confirmed
The wiki RFC index lists these under "Implemented" for PHP 8.6. The list below is a selection.
- Partial function application.
- Readonly property defaults.
- A
clamp()function. - A
Durationclass. - A polling API.
- Stream error handling improvements.
- A
SortDirectionenum. #[\Override]on class constants.- Debuggable enums.
- Secure session configuration defaults.
- Form feed added to the
trim()functions. - The end of mbregex support, because Oniguruma is no longer maintained.
- Deprecation of returning values from
__construct()and__destruct().
We list nothing that is only proposed or under discussion. The RFC index also shows an accepted "Minimum supported versions for PHP 8.6" RFC. We did not read its text.
What to check before you move
These changes come from the UPGRADING file in the php-src PHP-8.6 branch. A file on a branch can still change before GA, so recheck it at release.
Behavior changes that can break a site
- Session defaults change:
session.use_strict_mode=1,session.cookie_httponly=1andsession.cookie_samesite="Lax". Test logins, carts and any flow that crosses sites, such as payment returns and single sign-on. trim(),ltrim()andrtrim()now strip form feed (\f) by default.- Stricter input checks. Many functions now reject NUL bytes with an error, including
getenv(),putenv(),parse_str(),proc_open()and the file status functions such asfile_exists()andis_file(). Look for code that passes unfiltered user input to them. preg_grep()returnsfalseon a PCRE error instead of a partial array.- A hard out-of-memory error now calls
abort()and the process exits with code 134. Check monitoring or process supervisors that react to exit codes.
Deprecations
returninsidefinally.- A third argument to
define(). - Returning values from
__construct()and__destruct(). - The aliases
is_double(),is_long(),is_integer()anddoubleval(). spl_object_hash().- Mbregex.
- Session handlers that lack
create_sid()andvalidateId().
Steps
- Wait for GA, then for your host or distribution to offer the new branch.
- Check your CMS. The WordPress handbook shows that PHP 8.5 support arrived in WordPress 6.9. Check the handbook for 8.6 and your WordPress version after GA.
- Run a scan on staging. PHP 8.2 to 8.4 shows the PHPCompatibility commands. Set
testVersionto the release you target once your copy of PHPCompatibility knows it. - Test on staging only. Never put a release candidate on production. Fix PHP2Shell with 8.4 now and treat 8.6 as a separate project.
Last reviewed on 22 October 2026.