PHP 8.6: What's New and How to Test It Before 19 November 2026
PHP 8.6 is in Release Candidate, GA on 19 November 2026. New features, deprecations to check, and how to install the RC on Ubuntu without touching production.
UptimeMag editorial team · 12 October 2026 · 2 min read

PHP 8.6 has reached its third Release Candidate. RC3 is dated 8 October 2026, as reported on the official pre-release builds page at php.net. General Availability is still scheduled for 19 November 2026, according to the timeline published by php.watch. For anyone managing production servers, this is the time to test the upgrade in a separate environment, not to wait until release day.
Main new features
Among the features confirmed for PHP 8.6, according to stitcher.io's summary:
- Partial function application (PFA): you can create a closure with some parameters already filled in using
?as a placeholder, useful alongside the pipe operator introduced in 8.5. - Readonly property defaults:
readonlyproperties can finally have a default value, something that was not allowed before. - Time\Duration: new class for representing durations with nanosecond precision, with arithmetic and comparison methods.
- clamp(): new native function that constrains a value within a minimum/maximum range, on numbers, strings and
DateTimeobjects. - Polling API (namespace
Io\Poll): unified interface for epoll (Linux), kqueue (BSD/macOS), event ports (Solaris) and WSAPoll (Windows), designed mainly for those writing async libraries or working with PHP-FPM. - DocComments on parameters:
ReflectionParameter::getDocComment()reads comments written directly next to individual parameters.
What to check before migrating
Some deprecations affect code that has been running in production for years. From the changelog as reported by stitcher.io:
- Return from a
finallyblock: deprecated, as it has always been a source of subtle bugs. define()with thecase_insensitiveargument: support for case-insensitive constants was already effectively removed; now the option itself is deprecated.spl_object_hash(): replace withspl_object_id(), as already flagged in the Beta 1 upgrade notes.- Passing objects where arrays are expected (e.g.
array_walk()): deprecated behaviour because it can cause memory corruption. - Session defaults:
session.use_strict_modechanges from 0 to 1,session.cookie_httponlyfrom 0 to 1,session.cookie_samesitefrom empty string toLax. Anyone handling logins and cross-site flows should verify that the application does not rely on the old defaults.
Also watch out for mb_ereg(), mb_ereg_replace() and mb_split(): the Oniguruma-based mbregex functions are deprecated, with removal planned in PHP 9.0.
How to install it on Ubuntu without touching production
The RC build should be compiled from source in a separate directory, not installed as the system PHP. Official packages are at php.net/pre-release-builds.php:
wget https://www.php.net/distributions/php-8.6.0RC3.tar.gz
tar xzf php-8.6.0RC3.tar.gz
cd php-8.6.0RC3
./configure --prefix=/opt/php86rc
make -j$(nproc)
sudo make install
To verify that the test binary is the right one, without touching your system php:
/opt/php86rc/bin/php -v
The command returns the version active in that path: if PHP 8.6.0RC3 appears, the binary is isolated and your production PHP remains the one already configured at /usr/bin/php. For the complete changelog of changes between RCs, the reference source remains the official releases page, updated with each new QA release.
Written with the help of artificial intelligence and checked by the editors (EU AI Act, art. 50).