Release Information
- Release Type
- Security Update
- 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.0RC2 is the latest QA release in PHP 8.6.
Downloads
Source Code
Git Clone
Use Git to clone the 8.6.0RC1 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.6.0RC1How 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.0RC1-cli-alpineDebian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.6.0RC1-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.0RC1-fpm-alpineDebian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.6.0RC1-apacheDebian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.6.0RC1-fpmCommit List
Alexander Danilov
- md5, sha1, openssl - using zend_bin2hex instead of local helper in GH-23819
Alexandre Daubois
- lexbor: Merge upstream memory safety fixes 8a14bc0 and f67ce4b in 5982cdace6
- Fix GHSA-62xp-839h-2637: FastCGI allowed_clients compared only 96 bits of IPv6 addresses in dcdfcf86fc
- Fix GHSA-fpwc-w8rq-cr92: strip credentials from user headers on cross-origin redirects in 5af9465ca8
- Fix GHSA-rgrp-mwpx-f6rm: unbounded recursion in
ext/soapXML parsing and decoding in 3655b79c7b
Arnaud Le Blanc
Arshid
ext/date: Change return type to static in GH-23317
Calvin Buckley
- Update paths for RM docs in GH-23486
Chris Brown
- NEWS: Remove duplicate in GH-23622
Daniel Scherzer
ext/mysqlnd: add a hardening assertion that the fetch callback is set in GH-23716- CLI server: add regression tests for "Host" header reflection in 5bebadbc89
- CLI server: remove "Host" header reflection from response in ed8ff1ec53
- CLI server: document "Host" header reflection removal in UPGRADING in 1f1d223bc0
David Carlier
ext/zip:ZipArchive::extractTo()ignores files given in a non-list array in 214ed7eb93ext/spl:SplDoublyLinkedList::serialize()use-after-free on element removal in daf076548b- Fix GH-23365:
DOMNode::insertBefore()drops the node used as its own reference in a7bdb8b53d ext/sockets:socket_select()silent set truncation on Windows in 2bca736479ext/xsl:XSLTProcessor::importStylesheet()use-after-free during a transformation in b55c619356ext/zip:ZipArchive::close()use-after-free from a progress or cancel callback in 132403de39- Fix GH-23729:
DOMXPath::__construct()use-after-free during an evaluation in a74f826ff2
David CARLIER
ext/posix: revertposix_access()flags validation. in GH-23710
Derick Rethans
- Updated to version 2026.4 (2026d) in da9a926984
geeknik
- Fix heap-buffer-overflow in convert stream filters with NUL in line-break-chars in b4e3397ec8
Gina Peter Banyard
- Zend: deprecate using "_" as a class and constant name in GH-23615
Zend/exception.c: improve getTraceAsString() method call setup in GH-23665ext/soap: Use bool type instead of int type for functions_all field in 8b1668d842- intl: refactor
php_converter_resolve_callback()in GH-23666 - Zend: deprecate is and let as identifiers in GH-23709
- Zend: reorganise some type declarations tests in 6d910200db
- Zend: fix OSS-Fuzz 532353396, static is a built-in type in 8d38af63ce
- tree: Drop FCI.object assignment if we have an FCC in GH-23739
ext/curl: removeXFAILsection for tests that are fixed in GH-22460
Ilia Alshanetsky
- dom: clear the xpath callback registrations before freeing them in 21e2c56aa4
- iconv: keep working converter when stream filter seek reset fails in GH-23594
- dom: report the xpath callback node list to the cycle collector in GH-23596
ext/intl: Preserve PHP-side state when cloning formatters in 0f20be3867- TSRM: roll back id_count when the resource type table cannot grow in GH-23595
ext/pgsql: Restore binary-safepg_lo_write()in c135a869c1ext/intl: Resolve UConverter callbacks when the object is allocated in 2311816c9eext/pdo: Bound-check column index in getColumnMeta() in 4e26dd0f79- ext/sqlite3: reject
close()from inside a callback in 7300fa520d - dom: fix attribute namespaces from foreign content in the HTML parser in 92b08946a3
- Fix GHSA-ch8v-r6jh-4vvr: encode 0xFF in
FILTER_SANITIZE_ENCODEDin 7ac9700d0d - [http] Fix out-of-bounds read on empty Location header in 547566f17a
- Fix heap over-read in
cli_get_prompt()for empty cli.prompt in c2c01aea6c - Fix three Win32-only defects in
proc_opendescriptor handling in 8d0d6307aa ext/zlib: honor preset dictionary for raw inflate with non-default window in fb76b3d715ext/gettext: throw on libintl NULL return in textdomain/bindtextdomain in GH-21882- Fix GH-23693: JIT guard branches on stale flags across basic blocks in 9c2acc343e
- Fix GH-21776: use-after-free in
zend_std_read_propertymagic__issetin GH-21786 - Pin
$thisinzend_call_functionin GH-22151 - Zend: release the trampoline when
zend_call_function()bails early in d19c413d48 ext/pdo: Do not register a bindColumn() binding for an unknown column in 3580bbd28bext/intl: Reject unconstructed Collator in attribute and strength methods in 630128392b
Jakub Zelenka
- Fix bug #60110 (
fclose(),file_put_contents(),copy()do not return false properly) (#12067) in c07cc8502c - main/streams: Keep context alive during stream error finalization in a546219941
ext/standard: Fix stream use after error handler instream_get_meta_datain 84ecdb9f04- main/streams: Fix parent lookup when unwinding stream error operations in ff03f03b82
- main/streams: Detach errors before reporting in stream error operation end in 1074fcb2bf
- main/streams: Pair refused stream error operations with a no-op end in 39a230ccda
- Fix GHSA-vvx9-73fr-5jjx: do not fall back to CN if the cert has a service ID in 0bb308eb4c
- Fix GHSA-xr7j-rvgx-xq5p: OOB read in
php_openssl_matches_wildcard_name()in 78cc82b37a - Fix GHSA-r6x9-5r99-36j7: Various packet overreads in mysqlnd wireprotocol in 114dbb7436
- Fix GHSA-j3wh-g957-2m85: phar tar entry injection in 0994e2e887
- Add NEWS entries in a14181c944
ext/soap: make GHSA-cj93-vc83-wgqv test lean and reliable in 3aedde06bc- Fix GH-22844: Io\Poll watchers after the watched stream is closed in GH-23822
- Skip bz2 GH-20807 test when less than 13 GiB of memory is available in 7d4f779ee9
- Fix GHSA-fpwc-w8rq-cr92: do not cut the request short when stripping the last user header in 795440a704
Jordi Kroon
- curl: replace external URLs with local test server in tests in GH-21805
ext/standard: Fix 1-char relative Location redirects after GH-23467 in 64664758cd- build/gen_stub: include attribute arguments in synopsis modifiers in GH-22418
- tree: Add
#[\SensitiveParameter]to more functions taking secrets in GH-23782
Julien Voisin
- Check the links before unlinking a huge block in GH-23568
- Bound the free list walk in
zend_mm_gc()in GH-23566 - Fix a non-exploitable integer overflow in mhash_keygen_s2k in GH-23770
- Fix an integer overflow in to_xml_hexbin in GH-23771
ext/openssl: scrub symmetric key material before freeing in GH-23778ext/xml: reject changing handlers while parsing in GH-23818ext/curl: fix use-after-free when setting a callback option from its own callback in GH-23814
jvoisin
- Backport: reject XML handler changes while parsing in GH-23818
- Backport: reject cURL callback changes from callbacks in GH-23814
- Backport: fix integer overflow in to_xml_hexbin in GH-23771
- Backport: fix integer overflow in mhash_keygen_s2k in GH-23770
Kamil Tekiela
- Drop _mysqlnd_init_ps_fetch_subsystem in GH-23727
- Fix GH-22854 (Assertion failure at link_errno_read in
ext/mysqli/mysqli_prop.c) in GH-20117
lazerg
Lazizbek Ergashev
- Fix GH-23644: crash on a constant-vs-constant empty array comparison in 7c94b351db
Louis-Arnaud
ext/calendar: takezend_longin the *ToSdn() conversion helpers in GH-23555
Manish Kafle
- Fix GH-23662: avoid NAN warning in
print_r()in 30920e9004
Marc
- perf: fix LTO build with gcc (hybrid VM) in GH-23602
- perf: ZTS: remove obsolete realpath access check in GH-22721
zend_strtod: use trunc(dval(&u)) instead of (Long)(dval(&u)) to keep per-digit dependency chain in float register in GH-22676- Enable the TAILCALL VM when building with
--disable-gcc-global-regson GCC >= 16 in GH-23603 - fix windows ci: w11 no longer treats names like NUL.txt as reserved in GH-23844
Matteo Beccati
- CI updates after forking 8.6 in 95c29bbb27
- CI updates after forking 8.6 in 5714009960
- Update versions for PHP 8.6.0RC1 in 0249e4b1c9
Máté Kocsis
ext/uri: Reject URL delimiters in builder hosts in a357c011ceext/uri: Initialize builder validation exception errors in 1c2ae570dcext/uri: Return builder soft errors consistently in a7a2303f95ext/uri: Validate credentials against normalized builder hosts in 3bec7e4b66ext/uri: Preserve empty query and fragment in URL builders in 100e8f353eext/uri: Minor fixes for Uri\WhatWg\UrlBuilder in 2b9b40779aext/uri: Build hostless URLs with the correct path type in eb34f8920dext/uri: Fix throwing Uri\UriError in 703b5bb37aext/uri: Fix the behavior for $softErrors in GH-23740- Restore JIT benchmark runs in d2493f6807
- Implement "Followup improvements for
ext/uri" RFC - URL building with base URL in GH-23526
ndossche
- Fix OSS-Fuzz #546798343: Heap-buffer-overflow in
zend_delete_call_instructionswith callable conversion in 3213c3faa6 - Fix OSS-Fuzz #538730793: Assertion failure when returning by-ref from closure invoke in 762fdd56c9
- Fix OSS-Fuzz #540904105: ASSERT: ast->attr == T_CLASS_C in 71d56aa501
- Fix OSS-Fuzz #545352966: default value AST of an SHM-persisted partial in 7c0ecd8053
- Fix GH-23619:
ext/ftp: cryptic error on servers that don't support TLS session resumption on data connection in d841b499b8 - Fix OSS-Fuzz #5674034779193344: Read of uninitialized memory in
is_cacheable_stream_path()in c7ffb825aa
NickSdot
ext/standard: Removes ZPP style tests in GH-23413ext/standard: applied fixers to improve test robustness in GH-23136
Nicolas Grekas
ext/standard: Remove deadStreamPollHandle::getFileDescriptor()in 59e0be101bext/standard: Fix use-after-free when a polled stream is closed in 2a43bd1cceext/standard: Fix Io\Poll timeouts longer than INT_MAX milliseconds in 39f98f768a- Map
epoll_ctl()errors throughphp_poll_errno_to_error()in GH-23805
Nora Dossche
- Zend: use ZVAL_COPY_DEREF when possible in GH-23694
- Drop unused class_cleanup_handlers in GH-23696
- Fix OSS-Fuzz #562721806: Use-of-uninitialized-value in zim_Time_Duration___unserialize (#23759) in 8de697eb08
- Fix GHSA-cj93-vc83-wgqv in b11bd1d939
Ondřej Mirtes
- Cache freed VM stack pages instead of freeing them immediately in GH-23470
Pratik Bhujel
- Fix GH-11662: Skip multicast test when unavailable in a1a7bd4b8b
Shivam Mathur
- Avoid closing libxml output encoder twice in GH-23678
- Fix GHSA-9f67-6fw4-hpfp in f785c3f6ce
tekimen
ext/mbstring: Update to Unicode 18.0 in GH-23755
tianfenghan
- Fix GH-22567 (Windows ZTS CLI SAPI should refresh its TSRMLS cache during request activation) in 4e64a2655e
Tim Düsterhus
zend_API: Verify property types inobject_properties_load()in GH-23639- date: Fix unserialization of
Time\Durationin GH-23629 - date: Fix test description for
time/duration/methods/compare.phptin 6766bdbdd8 - date: Add comparison handler to Time\Duration in GH-23695
- standard: Improve
sprintf()error message when providing an empty arg specifier in GH-23706 - uri: Fix casing of
UriHostTypeandUrlHostTypeenum cases in GH-23851
Weilin Du
- Zend: Fix iterator relocation at the current element during rehash in GH-23607
ext/intl: Reduce stack usage incollator_regular_compare_function()in GH-23627ext/standard: Use ZVAL_STRINGL_FAST() inphp_explode_negative_limit()in GH-23631ext/standard: Optimizestr_pad()using doubling copies in GH-23661ext/mbstring: Optimizemb_str_pad()using doubling copies in GH-23667ext/standard: Optimize octal escape generation inaddcslashes()in GH-23680ext/standard: Optimizestr_repeat()when the multiplier is one in GH-23681- Revert Zend: Fix iterator relocation at the current element during rehash in 8.4 and 8.5 in 293f22e5ec
ext/standard: Optimize integer key insertion inarray_change_key_case()in 1849f03afcext/standard: Use append-new insertion when parsing CSV in a318ae8251ext/standard: Avoid redundant hash checks ingetopt()in f0ed2c5890ext/standard: Use known-new keys inerror_get_last()in 6541e8331bext/standard: Preallocate stat result arrays in 9687652b3fext/standard: Optimize & Refactorpathinfo()in GH-23726- Upgrade fileinfo to file 5.48 in GH-23699
ext/intl: Optimize callback handling inIntlChar::enumCharTypes()in GH-23748- CI: fix ext/
zend_test/tests/zend_mm_custom_handlers_alloc_01.phptin GH-23775 ext/standard: Optimizearray_column()in GH-23786