Release Information
- Release Type
- Bug Fix Release
- Release Status
- QA Release
- Branch Status
- Upcoming Release
PHP 8.6 is a development version, and is not recommended for production use. PHP 8.6 is scheduled to reach General Availability on 2026-11-19.
PHP 8.6.0RC3 is the latest QA release in PHP 8.6.
Downloads
Source Code
Git Clone
Use Git to clone the 8.6.0RC2 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.6.0RC2How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (
Detailed articles on how to compile PHP are available for Ubuntu/Debian based systems and Fedora/RHEL based systems.
./buildconf), configuring the build ./configure, and running make.Detailed articles on how to compile PHP are available for Ubuntu/Debian based systems and Fedora/RHEL based systems.
Docker/Podman Containers
PHP CLI
PHP CLI Containers images only include the PHP CLI, and no FPM or Apache modules. The Alpine builds are lightweight, but may introduce incompatibilities due to their musl builds. Albeit their larger size, the Debian-based (without the "-alpine" suffix) images are more complete, and widely used.
Alpine-based: Lightweight, but may introduce incompatibilities due to their musl builds.
docker pull php:8.6.0RC2-cli-alpineDebian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.6.0RC2-cliPHP CLI + Web Server Integration
These container images include PHP CLI, and a web server integration. FPM container images can be integrated with web servers such as Nginx, Caddy, and Apache with Event MPM. The Apache container images include Apache web server, integrating PHP as an Apache module.
Alpine-based: Lightweight, but may introduce incompatibilities due to their musl builds.
docker pull php:8.6.0RC2-fpm-alpineDebian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.6.0RC2-apacheDebian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.6.0RC2-fpmChangeLog
Core
- Fixed incorrect internal pointer and foreach iterator positions when compacting arrays with holes.
- Fix handling of references to typed properties during unserialization of various internal classes.
- Fixed OSS-Fuzz 532353396 (assertion failure with static type).
- Fix GH-23662 (Avoid NAN warning in
print_r()). - Fixed bug GH-23752 (Use scoped diagnostic suppression for the global register declarations so the caller's -Wvolatile-register-var state is restored).
- Fixed OSS-Fuzz #538730793 (Assertion failure when returning by-ref from closure invoke).
- Fixed OSS-Fuzz #540904105 (ASSERT: ast->attr == T_CLASS_C).
CLI
- Fix GH-22567 (Windows ZTS CLI SAPI should refresh its TSRMLS cache during request activation).
- Fixed bug GH-23764 (Built-in server leaks a file descriptor on every HEAD request for a static file).
Date
- Fix unserialization of Time\Duration.
- Add comparison handler for Time\Duration.
DOM
- Fixed use-after-free when re-constructing a DOMXPath whose php:function registrations are freed while still reachable from the cycle collector.
- Fixed
Dom\HTMLDocument::getElementById()not finding ids of SVG and MathML elements. - Fixed Dom\HTMLDocument giving attributes the namespace of their element when a fragment is parsed with an xlink, xml or xmlns context element.
Fileinfo
- Upgrade to file 5.48.
Intl
- Fixed cloning IntlDateFormatter and MessageFormatter losing PHP-side state such as dateType, timeType, calendar and the message pattern.
- Fixed a crash when converting with a cloned UConverter that uses toUCallback/fromUCallback.
- Fixed Collator attribute and strength methods not rejecting an unconstructed Collator.
Lexbor
- Merge patches lexbor/lexbor@8a14bc0 and lexbor/lexbor@f67ce4b, fixing a heap buffer overflow in :lexbor-
contains()parsing and buffer overflows in malformed decode replay.
MBString
- Fixed bug GH-23106 (
mb_strpos()reads past the end of a haystack ending in a truncated UTF-8 sequence). - Updated Unicode data tables to Unicode 18.0
- Fixed mbstring functions emitting surrogates in UTF-8 output and flagging it as valid UTF-8.
MySQLi
- Fix GH-22854: Fixed failed assertion when accessing mysqli property after failed reconnection.
Opcache
- Fixed bug GH-23693 (Tracing JIT produces wrong results for a guard on a loop-invariant addition).
- Fixed OSS-Fuzz #545352966 (default value AST of an SHM-persisted partial).
PDO
- Fixed
PDOStatement::getColumnMeta()reading out of bounds for an invalid column index. - Fixed
PDOStatement::bindColumn()registering a binding for a column name that is not in the result set. - Fixed bug GH-23962 (Destroying a persistent PDO instance rolls back a transaction still in use by another instance).
PGSQL
- Fixed
pg_lo_write()rejecting data containing null bytes.
Posix
- Reverted the validity check on the flags argument of
posix_access().
Readline
- Fixed a heap over-read in the interactive shell prompt when cli.prompt is set to an empty string.
Session
- Fixed
session_start()continuing after a failedcreate_sid()when session.use_strict_mode rejects the supplied ID. - Fixed exceptions from user-defined
create_sid()handlers being replaced by return-value validation errors.
SPL
- Fixed bug GH-23385 (
SplDoublyLinkedList::serialize()use-after-free when__serialize()removes an element).
SQLite
- Fixed a crash when
SQLite3::close()is called from a userland callback.
Standard
- Fixed bug #60110 (
fclose(),file_put_contents(),copy()do not return false properly). - Fixed three Windows-only
proc_open()defects: an uninitialized PROCESS_INFORMATION, an indeterminate comspec pointer after a failed lookup, and an unchecked CreateFileA() failure. - Fix persistent stream context lifetime during shutdown
- Fixed bug GH-23780 (unserialize('') fails silently).
URI
- Fix casing of enum cases in UriHostType and UrlHostType to match the RFC and PHP’s naming policy.
Zlib
- Fixed
inflate_init()dropping the preset dictionary for raw streams with a non-default window.
Commit List
Daniel Scherzer
- Reflection: add regression tests for printing boolean constant values in 2b1f6ad52b
- Reflection: print boolean constant values as
trueandfalsein 0da9d196b1 - Reflection: add UPGRADING note about changed boolean constant display in 77d4c7f7dd
Ilia Alshanetsky
ext/session: Abort strict-mode re-creation whencreate_sid()fails in 4868dd4e02
Jakub Skopal
- Fix GH-23764: Built-in server leaks fd on HEAD request for static file in abdcfc38b4
Matteo Beccati
- [ci-skip] PHP 8.6.0RC1 will be skipped in 16130a5c45
- Prepare for PHP 8.6.0RC2 in 3987f2e7f0
- Update versions for PHP 8.6.0RC2 in 6373dd754b
Shivam Mathur
- Update PHP SDK to 2.8.4 in GH-23858
Tim Düsterhus
- standard: Pass
unserialize('')through the regular path in GH-23827