Release Information
- Release Type
- Bug Fix Release
- Release Status
- Latest
- Branch Status
- Supported (Latest)
Latest PHP release in the latest version.
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.15 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.15How 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.15-x64NTS.zip (31.95 MiB)
php-8.4.15-x86NTS.zip (28.62 MiB)
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.15-x64TS.zip (32.10 MiB)
php-8.4.15-x86TS.zip (28.74 MiB)
ChangeLog
Core
- Fixed bug GH-19934 (CGI with auto_globals_jit=0 causes uouv).
- Fixed bug GH-20073 (Assertion failure in WeakMap offset operations on reference).
- Fixed bug GH-20085 (Assertion failure when combining lazy object get_properties exception with foreach loop).
- Fixed bug GH-19844 (Don't bail when closing resources on shutdown).
- Fixed bug GH-20177 (Accessing overridden private property in
get_object_vars()triggers assertion error). - Fixed bug GH-20270 (Broken parent hook call with named arguments).
- Fixed bug GH-20183 (Stale EG(opline_before_exception) pointer through eval).
DOM
- Partially fixed bug GH-16317 (DOM classes do not allow
__debugInfo()overrides to work). - Fixed bug GH-20281 (`Dom\Document::getElementById()` is inconsistent after nodes are removed).
Exif
- Fix possible memory leak when tag is empty.
FPM
- Fixed bug GH-19974 (fpm_status_export_to_zval segfault for parallel execution).
FTP
- Fixed bug GH-20240 (FTP with SSL:
ftp_fput(): Connection timed out on successful writes).
GD
- Fixed bug GH-20070 (Return type violation in imagefilter when an invalid filter is provided).
Intl
- Fix memory leak on error in
locale_filter_matches().
LibXML
- Fix not thread safe schema/relaxng calls.
MySQLnd
- Fixed bug GH-8978 (SSL certificate verification fails (port doubled)).
- Fixed bug GH-20122 (getColumnMeta() for JSON-column in MySQL).
Opcache
- Fixed bug GH-20081 (access to uninitialized vars in
preload_load()). - Fixed bug GH-20121 (JIT broken in ZTS builds on MacOS 15).
- Fixed bug GH-19875 (JIT 1205 segfault on large file compiled in subprocess).
- Fixed bug GH-20012 (heap buffer overflow in jit).
- Partially fixed bug GH-17733 (Avoid calling wrong function when reusing file caches across differing environments).
PgSql
- Fix memory leak when first string conversion fails.
- Fix segfaults when attempting to fetch row into a non-instantiable class name.
Phar
- Fix memory leak of argument in webPhar.
- Fix memory leak when setAlias() fails.
- Fix a bunch of memory leaks in
phar_parse_zipfile()error handling. - Fix file descriptor/memory leak when opening central fp fails.
- Fix memleak+UAF when opening temp stream in buildFromDirectory() fails.
- Fix potential buffer length truncation due to usage of type int instead of type size_t.
- Fix memory leak when openssl polyfill returns garbage.
- Fix file descriptor leak in
phar_zip_flush()on failure. - Fix memory leak when opening temp file fails while trying to open gzip-compressed archive.
- Fixed bug GH-20302 (Freeing a phar alias may invalidate PharFileInfo objects).
Random
- Fix
Randomizer::__serialize()w.r.t. INDIRECTs.
Reflection
- Fixed bug GH-20217 (
ReflectionClass::isIterable()incorrectly returns true for classes with property hooks).
SimpleXML
- Partially fixed bug GH-16317 (SimpleXML does not allow
__debugInfo()overrides to work).
Streams
- Fixed bug GH-19798: XP_SOCKET XP_SSL (Socket stream modules): Incorrect condition for Win32/Win64.
Tidy
- Fixed GH-19021 (improved tidyOptGetCategory detection).
- Fix UAF in tidy when tidySetErrorBuffer() fails.
XMLReader
- Fix arginfo/zpp violations when LIBXML_SCHEMAS_ENABLED is not available.
Windows
- Fix GH-19722 (_get_osfhandle asserts in debug mode when given a socket).
Commit List
Alexandre Daubois
- Fix GH-20217:
ReflectionClass::isIterable()should return false for classes with property hooks in GH-20241
Arnaud Le Blanc
- Fix access to uninitialized variables in
preload_load()in ab9d121f48 - Fix JIT TLS on MacOS in 3abebf3e31
- NEWS in e37a207ddd
- NEWS in 94f48f1ade
Calvin Buckley
- Move iconv const check into autoconf (8.3) in GH-20247
- Update versions for PHP 8.4.15 in 753b695359
David Carlier
- Fix GH-19021: improve tidyOptGetCategory detection in ebbb1b4295
ext/gd: Fix GH-19955 unit test in 3c063abba1ext/zip: fix memory leak when encryption is passed as userland array option in 55f7303d73
Dmitry Stogov
- Update IR in dd4189da83
- Disable inlining and inter-procedure-analyses for
zend_string_equal_val()function that may be overriden for valgrind in GH-13099 - Update IR in 191430dc3d
Dylan K. Taylor
- Fix GH-19722: Windows: _get_osfhandle asserts in debug mode when given a socket in 94625a0e4c
Gina Peter Banyard
- Fix GH-20070: Return type violation in imagefilter when an invalid filter is provided in 26f989313e
ext/phar: use size_t type instead of int in d36109bd71ext/pgsql: Fix segfaults when attempting to fetch row into a non-instantiable class name in GH-20180- Fix include paths for new pgsql tests in 14ed75e560
Ilija Tovilo
- Backport more curl 8.16 fixes in 1edcce5554
- Fix CGI with auto_globals_jit=0 in 9bc35f1982
- Don't bail when closing resources on shutdown in e6e39e680e
- Fix accessing of overridden private property in
get_object_vars()in 02c67b47f7 - Improve
bug60602.phptportability in 939b97219d - Create separate workflow for nightly slack notification in 90bc40ecc0
- Revert "Fix Windows test for openssl-3.5 upgrade (#19384)" in 3f6c86a885
- Fix parent hook call with named args in b150eb35d4
- Fix stale EG(opline_before_exception) pointer through eval in 12920370e1
- Fix EG(current_execute_data) introduced in 1292037 in 5518165499
- Reset Z_EXTRA_P(op2) of
ZEND_INIT_FCALLfor opcache file cache in 50c7f498b9
Jakub Zelenka
- Fix GH-19974: fpm_status_export_to_zval segfault for parallel execution in 059f9f78e5
- Fix GH-19798: XP_SOCKET XP_SSL: Incorrect condition for Win in eef11e048d
Niels Dossche
- Fix GH-20073: Assertion failure in WeakMap offset operations on reference in b16761ec11
- Fix GH-20085: Assertion failure when combining lazy object get_properties exception with foreach loop in 27035eb01e
- Fix
Randomizer::__serialize()wrt INDIRECTs in c5fa7696e6 - Fix arginfo/zpp violations when LIBXML_SCHEMAS_ENABLED is not available in 40f4091256
- phar: Fix memory leak of argument in webPhar in da39975001
- phar: Fix memory leak when setAlias() fails in 9216b8be8b
- Partially fix GH-16317: SimpleXML does not allow
__debugInfo()overrides to work in efa1fafc2f - Fix memory leak in
phar_parse_zipfile()error handling in 416386acc4 - phar: Reduce code duplication wrt error handling in
phar_parse_zipfile()in f9aeb9e57c - Update
SKIPIFfor bug #67563 (#20133) in 8a21d62c28 - phar: Fix file descriptor/memory leak when opening central fp fails in c89f25bf69
- Partially fix GH-16317: DOM classes do not allow
__debugInfo()overrides to work in 8e0504c38b - Add forgotten NEWS item in 390e24397a
- phar: Fix more alias memory leaks in b529c77094
- phar: Fix memleak+UAF when opening temp stream in buildFromDirectory() fails in 5a7c84f274
- Fix shm corruption with coercion in options of
unserialize()in 88f8c5c0bb - Fix not thread safe RelaxNG invocations in ZTS builds in 75d8449d1f
- Wrap the normally lazy-initialized components in ZTS in f3cb9a81fb
- exif: Fix possible memory leak when tag is empty in 56af25cc1c
- Fix GH-8978: MySQLi: SSL certificate verification fails (port doubled) in 472f2fe0a3
- Fix GH-20122: getColumnMeta() for JSON-column in MySQL in 94284df7b2
- Fix test on 8.4+ in 1570f6a6b2
- Fix test on 8.4+ in GH-20196
- intl: Fix memory leak on error in
locale_filter_matches()in 28ce1b04ef - pgsql: Fix memory leak when first string conversion fails in cf3b70d23c
- phar: Fix memory leak when openssl polyfill returns garbage in 020bbea8fd
- phar: Fix file descriptor leak in
phar_zip_flush()on failure in cc83761416 - phar: Fix memory leak when opening temp file fails while trying to open gzip-compressed archive in ce0df1a9d8
- Use MYSQL_TYPE constants instead of FIELD_TYPE in c7fc819c2d
- Fix UAF in tidy when tidySetErrorBuffer() fails in 58df9fcf98
- Fix macro check that I forgot to commit in aebe5c92a9
- Make
bug70417.phptless flaky in ed9529a7d3 - Fix GH-20281: `Dom\Document::getElementById()` is inconsistent after nodes are removed in cb1f9327c4
- ftp: Fix weird typo in GH-20295
- Fix GH-20240: FTP with SSL:
ftp_fput(): Connection timed out on successful writes in 8761c4e507 - Fix GH-20302: Freeing a phar alias may invalidate PharFileInfo objects in 6fe40de6e3
- Update zlib test to use separate file for
flock()in c3d6bf65d5 - random: Fix memory leak when serialization fails in GH-20383
Remi Collet
- ensure test passes with prod config in 2f4b8e691a
Shivam Mathur
- Skip
lc_ctype_inheritance.phpton macos 15+ in 2f2fb1fbf1 - Fix Windows test for openssl-3.5 upgrade in GH-19384
SpencerMalone
- Fix not thread safe xmlSchemaParse calls in ZTS builds in f14e5fcfbd
Tim Düsterhus
- github: Bust the nightly CI cache on Sunday instead of Monday in GH-20242