Release Information
- Release Type
- Security Update
- Release Status
- Latest Release in 8.4
- Branch Status
- Supported
Latest release for PHP 8.4. This release contains security fixes, and it is recommended to update as soon as possible.
PHP 8.4 continues to receive bug fixes and security fixes until 2026-12-31.
Downloads
Source Code
Git Clone
Use Git to clone the 8.4.26 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.26How 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.
Windows binaries
Non-Thread Safe Builds
Non-Thread Safe (NTS) builds are single-threaded PHP builds. They can be used on web servers that integrate PHP over FastCGI protocol, such as Nginx, Caddy, and IIS.
php-8.4.26-x64NTS.zip
Size: 33.48 MiB SHA256:
da68394f9193b7f6b89d0c76861a4034ae10efee7fd55a7255d8118c2acf70d7 php-8.4.26-x86NTS.zip
Size: 30.04 MiB SHA256:
82dbaa361e035237a6ed0ade126f837798c7bf0565610b73ddb40986fc107128 Thread-Safe Builds
Thread-Safe (TS) builds are multi-thread PHP builds, often used to integrate PHP as a Server API for multithreaded servers. The most common use case is using PHP as an Apache module.
php-8.4.26-x64TS.zip
Size: 33.51 MiB SHA256:
6e56f0e932e92bfdce208d3a7e6068f6e2f7a19fc2922a5f856fb085f61673f3 php-8.4.26-x86TS.zip
Size: 30.11 MiB SHA256:
d48e2e0b6ca6568216ad0123596323dc30d19c01f2353b507fc861c8b23d523c ChangeLog
BCMath
- Fixed out-of-bounds read in
bc_is_zero_for_scale()when scale exceeds n_scale.
Core
- Fixed out-of-bounds reads during automatic UTF-16/32 encoding detection.
- Fixed bug GH-15375 (Nested "yield from" skips items after a
valid()ornext()call on the inner generator). - Fixed bug GH-23232 (lone namespace separator asks the autoloader for an empty class name).
- Fixed bug GH-23301 (Nested "yield from" yields a value twice when the middle generator delegates again).
CLI
- Fixed bug GH-23425 (
sapi_cli_server_send_headers()does not check the return value ofphp_cli_server_client_send_through()).
DOM
- Fixed
NamedNodeMap::getNamedItemNS()with an empty URI not matching the null namespace in spec-following mode. - Fixed a use-after-free when cloning a DOMNameSpaceNode after
DOMDocument::xinclude(). - Fixed bug GH-23331 (UAF when
node_list_unlink()skips attribute children that still have a live wrapper). - Fixed a use-after-free when
Dom\Element::setAttributeNS()replaces the value of an attribute whose child still has a live wrapper.
GD
- Fixed
imageaffinematrixget()andimageaffinematrixconcat()reporting the wrong argument in error messages. - Fixed bug GH-23457 (
imagebmp()is extremely slow when writing to a file).
FPM
- Fixed bug GH-19320 (FPM UID and GID overflow).
- Fixed GHSA-62xp-839h-2637 (IPv6 ACL bypass in FastCGI listen.allowed_clients due to partial address comparison). (CVE-2026-91768)
Hash
- Fixed a buffer overflow in
hash_pbkdf2()with a large output length.
Intl
- Fixed
grapheme_strpos()andgrapheme_strrpos()with an empty needle returning UTF-16 offsets instead of grapheme offsets. - Fixed a memory leak when dumping IntlCalendar instances.
- Fixed a memory leak when iterating
IntlBreakIterator::getPartsIterator()results. - Fixed a double-free when IntlGregorianCalendar construction fails after the ICU constructor adopts the TimeZone.
- Fixed bug GH-23094 (NumberFormatter parsing offsets use UTF-16 positions for UTF-8 strings).
- Fixed
Locale::parseLocale()reading past a trailing '-' or '_'. - Fixed
grapheme_str_split()treating UBRK_DONE as a byte index. - Fixed a leak in
Locale::getKeywords()when a keyword value cannot be read. - Fixed a use-after-free when IntlRuleBasedBreakIterator is constructed from compiled rules.
MBString
- Fixed
mb_ereg_replace()emitting a NUL or out-of-bounds bytes in the replacement when a \k<name> backref has no closing delimiter.
MySQLnd
- Fixed GHSA-r6x9-5r99-36j7 (Various packet overreads in mysqlnd wire protocol). (CVE-2025-1218)
ODBC
- Fixed
odbc_field_len(),odbc_field_scale()andodbc_field_type()returning uninitialized memory when SQLColAttribute fails.
Opcache
- Fixed a crash when the huge page SHM remap discarded mappings outside the reserved address range.
- Fixed opcache.protect_memory race under ZTS.
- Fixed bug GH-23288 (Crash on restart when opcache.interned_strings_buffer is overridden in an individual FPM pool).
- Fixed a tracing JIT crash when compiling a side trace for a method of a class that could not be stored in the inheritance cache. (GH-21710)
OpenSSL
- Fixed GHSA-vvx9-73fr-5jjx (TLS hostname verification falls back to CN after SAN mismatch). (CVE-2026-91769)
- Fixed GHSA-xr7j-rvgx-xq5p (Heap buffer overflow in
php_openssl_matches_wildcard_name()on crafted server certificate wildcard CN). (CVE-2026-91767)
PDO
- Fixed a leak when a persistent connection failed a liveness check with no other live PDO handle.
PDO_ODBC
- Fixed bug GH-23444 (ODBC_ATTR_ASSUME_UTF8 corrupts Unicode data outside Windows).
PDO_PGSQL
- Fixed
PDO::CURSOR_SCROLLstatements closing a cursor that does not exist.
PDO Sqlite
- Fixed bug GH-20214 (
PDO::FETCH_DEFAULTunexpected behavior withPDOStatement::setFetchMode).
Phar
- Fixed bug GH-23418 (Use-after-free when looking up mounted directories).
- Fixed bug GH-23477 (Memory leak on duplicate native Phar manifest entries).
- Fixed GHSA-j3wh-g957-2m85 (Integer overflow in
phar_tar_number()allowing TAR archive entry injection). (CVE-2026-6103)
SNMP
- Fixed bug GH-23453 (
SNMP::setSecurity()frees a non-malloced address with a context engine ID longer than 32 bytes).
SOAP
- Fixed bug GH-23447 (Segfault when a class passed to
SoapServer::setClass()fails to initialize). - Fixed WSDL cache corruption when a soap:header defines headerfaults.
- Fixed stack overflow when parsing a WSDL with self-referential schema groups or attributeGroups.
- Fixed GHSA-rgrp-mwpx-f6rm (Unbounded recursion in server-side
cleanup_xml_node()). (CVE-2026-91765) - Fixed GHSA-cj93-vc83-wgqv (Integer overflow to buffer overflow in SOAP HTTP parsing). (CVE-2025-14181)
Standard
- Fixed a segfault when a stream filter callback unsets StreamBucket::$data before re-attaching the bucket.
- Fixed GHSA-7875-c8px-7q5f (Out-of-bounds read in the HTTP stream wrapper when following a redirect with an empty Location header). (CVE-2026-93682)
- Fixed a memory leak in
array_merge_recursive()when the recursive merge of an object converted to an array fails. - Fixed read buffer compaction in
php_stream_filter_flush(). - Fixed bug GH-22410 (Incorrect float behavior with large numbers).
- Fixed GH-23338 (fsockopen()/
pfsockopen()ValueError reported wrong argument number for $timeout). - Fixed bug GH-23576 (Next index for array returned from
array_keys()is wrong). - Fixed GHSA-88hq-2827-7pg6 (Out-of-bounds read in convert.* stream filters when line-break-chars contains NUL). (CVE-2026-92842)
- Fixed GHSA-fpwc-w8rq-cr92 (Cross-origin credential leak in HTTP stream wrapper redirects). (CVE-2026-91766)
SimpleXML
- Fixed writing to a dimension of the object returned by
attributes()not creating the attribute. - Fixed child elements of the element returned by
SimpleXMLElement::addChild()not being accessible by property name when namespaces are involved.
Windows
- Fixed GHSA-9f67-6fw4-hpfp (Reserved device names are not rejected before file and stream I/O). (CVE-2026-17545)
Zip
- Fixed bug GH-23276 (ZipArchive subclass storing its own stream cannot be garbage collected).
- Fixed
ZipArchive::extractTo()andZipArchive::getFrom*() reporting success on corrupted entries. - Fixed
ZipArchive::getNameIndex()truncating the entry index to int. - Fixed
fstat()on a zip:// stream reporting success when the archive cannot be opened.
SAPI
- Fixed fuzzer targets failing to build in isolation.
- Fixed returns uninitialized value on LiteSpeed lsapi SAPI
Commit List
Alexandre Daubois
- Fix GHSA-62xp-839h-2637: FastCGI allowed_clients compared only 96 bits of IPv6 addresses in 2ebf06842f
- Fix GHSA-fpwc-w8rq-cr92: strip credentials from user headers on cross-origin redirects in 93eb2fd6b9
- Fix GHSA-rgrp-mwpx-f6rm: unbounded recursion in
ext/soapXML parsing and decoding in 15df1f4f0f
arshidkv12
ext/standardFixround()for large integral doubles in GH-22461
Benedikt Franke
ColumbusLabs
David Carlier
ext/zip: fix extractTo()/getFrom*() success on CRC-corrupted entries in 2a2b337392ext/standard:array_merge_recursive()fix leak in 4c71b4e58eext/opcache: opcache.interned_strings_buffer per FPM pool crashed on restart in bfbae397a3ext/zip:ZipArchive::getNameIndex()index truncated to int in 473a7e0451ext/zip:php_zip_ops_stat()succeeds when the archive cannot be opened in 614afe7b09
Eyüp Can Akman
Florian Engelhardt
- Fix OPcache memory protection race under ZTS in GH-23081
geeknik
- Fix heap-buffer-overflow in convert stream filters with NUL in line-break-chars in 015c1cfdbb
Georgij Tsarin
- Fix read buffer compaction in stream filter flush in GH-23439
Go Kudo
- sapi/lsapi: fix returns uninitialized value in GH-23281
Ilia Alshanetsky
ext/session: check the created ID before validating it in 0df284a4fc- Fix GH-15375: nested "yield from" skips items after valid()/
next()in 0ccff76763 - Fix DOMNameSpaceNode clone UAF after xinclude in d09e5e2bc2
- Fix IntlGregorianCalendar double-free of an adopted TimeZone in GH-23321
- Bound getSingletonPos before reading the next separator in GH-23350
- Stop
grapheme_str_splitfrom using UBRK_DONE as a byte index in GH-23349 - Fix GH-23331: UAF when an attribute child keeps a live wrapper in d19f248f8e
- Fix UAF when setAttributeNS() frees a wrapped attribute child in 0dd7f31f15
- Fix leak when persistent PDO liveness check fails in b782a27242
ext/session: report a rejected session cookie header in 0870487b62- JIT: persist the SHM op_array in trace exit_info in 7873640e08
- Close the keyword UEnumeration on
Locale::getKeywordsfailure in b2956e0bb3 - [intl] fix leak when iterating IntlBreakIterator parts iterators in 7d6523170e
- [http] Fix out-of-bounds read on empty Location header in 8196275133
- [standard] Fix crash when filter callback unsets StreamBucket::$data in 47bebf87a0
- Keep compiled RuleBasedBreakIterator rules alive for the iterator in 35b09eaead
- [mysqlnd] Fix OK packet message length buffer over-read in 9e5cf96095
- [SimpleXML] Fix creating new attributes via
attributes()dimension write in fc7a6b9007 - [mysqlnd] Fix result set field metadata length buffer over-read in 9c74d7d1bc
- [intl] Fix leak of time zone wrapper in Calendar debug info in b7a85ee111
- [SOAP] Fix WSDL cache corruption when header defines headerfaults in f09a81ddee
- [DOM] Fix getNamedItemNS() with empty URI not matching null namespace in e832b5e3e7
- Revert the mysqlnd wireprotocol length-encoded bounds checks in e318023a6b
- [intl] Fix empty-needle
grapheme_strposoffsets in 1adadf07e5 - [mbstring] Fix
mb_ereg_replace()emitting NUL/garbage for unterminated \k<name> in 509e27bae1 - Clamp scale in bc_is_zero_for_scale to n_scale in 979c827cdc
- soap: reject self-referential schema group and attributeGroup fix-up in 797e3ea975
- odbc: check SQLColAttribute return codes in the field info functions in 0c2fc141fc
- simplexml: fix addChild() namespace filter on the returned element in 8b13fcc13e
Ilija Tovilo
- Fix enabling of opcache in community job for PHP <8.5 in 4fa25b04e7
Jakub Zelenka
- Fix GHSA-vvx9-73fr-5jjx: do not fall back to CN if the cert has a service ID in ec773b66ce
- Fix GHSA-xr7j-rvgx-xq5p: OOB read in
php_openssl_matches_wildcard_name()in f35eb420d9 - Fix GHSA-r6x9-5r99-36j7: Various packet overreads in mysqlnd wireprotocol in a7452c10bc
- Fix GHSA-j3wh-g957-2m85: phar tar entry injection in bade9b0bbd
- Add NEWS entries in 1f8b60c600
- Skip bz2 GH-20807 test when less than 13 GiB of memory is available in d016392e43
Jordi Kroon
ext/standard: Fix 1-char relative Location redirects after GH-23467 in de3436c76e
Jorg Sowa
- Fix NULL pointer dereference in
SessionHandler::create_sid()in d974c64303
Lazizbek Ergashev
- Fix GH-23301: nested "yield from" repeats a value after "yield from []" in GH-23302
- sapi/cli: check
php_cli_server_client_send_through()return value in 6748db3ff5 - Fix GH-23457:
imagebmp()is extremely slow when writing to a file in d7778413a2 - Fix GH-23447: segfault when the SoapServer class fails to initialize in 8dafaf5da2
- Fix GH-23444: ODBC_ATTR_ASSUME_UTF8 corrupts Unicode data outside Windows in GH-23445
ext/hash: Fix buffer overflow inhash_pbkdf2()with a large output length in 13f5c4bda2- Fix GH-23576:
array_keys()on an empty array returns a non-zero next index in GH-23577 - Fix GH-23453: bad free with a context engine ID longer than 32 bytes in 6f49c1f209
Levi Morrison
- Fix memfd_create header inclusion in b02e38a4a8
- Fix memfd_create config header inclusion in 1c298565a6
- Fix JUnit timing aggregation for long-running tests in GH-23438
Louis-Arnaud
- Fix wrong argument number and UB in fsockopen timeout error in GH-23431
Michael Orlitzky
- ext/gettext/tests: updates for musl-1.2.6 in 0f5b60ac70
ext/session: allow session.save_path to be nonempty in this test in e8c1e3a8b3
Mrmaxmeier
- sapi/fuzzer: depend on
PHP_BINARY_OBJSinstead ofPHP_SAPI_OBJSin GH-23394
Nora Dossche
- Fix GHSA-cj93-vc83-wgqv in 8078eb1b76
Piotr Hałas
ext/opcache: keep huge page remap inside the reserved range in GH-23554
Pratik Bhujel
Saki Takamachi
- Fixed the behavior when using FETCH_DEFAULT in GH-21864
- Update versions for PHP 8.4.26 in c31ae58ecb
Shivam Mathur
- Fix test file conflict on Windows in GH-23226
- Fix GHSA-9f67-6fw4-hpfp in 6bb5e50b45
Weilin Du
ext/readline: Fix class constant completion in readline interactive shell in GH-23218ext/snmp: AddXFAILon several tests (#22476) in GH-23231ext/zip: Fix AES-192 and AES-256 support reporting inphpinfo()in GH-23319- CI: fix flacky
ext/mysqli/tests/protocol_stmt_row_fetch_data.phptin GH-23330 ext/snmp: Put XFAILs underSKIPIFsection in tests in GH-23237ext/gd: Fix incorrect argument numbers in GD affine function errors in GH-23356- Fix GH-23276: Collect ZipArchive subclasses holding their own streams in GH-23282
- Fix GH-23418: UAF when accessing mounted Phar subdirectories in GH-23442
- Fix GH-23477: Memory leak on duplicate native Phar manifest entries in GH-23479
Yudai Takada
- Fix bounds check in multibyte UTF detection in GH-23527
武田 憲太郎
ext/pdo_pgsql: Fix CURSOR_SCROLL statements closing a nonexistent cursor in c1a7ab07ec