Guides

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: cosa cambia e come testarlo prima del rilascio del 19 novembre 2026

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: readonly properties 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 DateTime objects.
  • 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 finally block: deprecated, as it has always been a source of subtle bugs.
  • define() with the case_insensitive argument: support for case-insensitive constants was already effectively removed; now the option itself is deprecated.
  • spl_object_hash(): replace with spl_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_mode changes from 0 to 1, session.cookie_httponly from 0 to 1, session.cookie_samesite from empty string to Lax. 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).