PHP 8.4.15 is an old release of PHP 8.4 series. Using the latest version PHP 8.4.17 is highly recommended.
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
Size: 31.95 MiB SHA256:
b0bc767f7b29d56c19c417b9d5cd8ae498996f8a588d499ae4943601e2e8a7df php-8.4.15-x86NTS.zip
Size: 28.63 MiB SHA256:
08333065ed4c1ad3840ab3916ba9539b611275b757d4f0957e271e179cdb5b6c 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
Size: 32.11 MiB
php-8.4.15-x86TS.zip
Size: 28.69 MiB SHA256:
5b0ff1ad5005b7e04da1385c6e992733161448b432915dd34a7feb6689c48aa9 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.4.15-cli-alpineDebian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.4.15-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.4.15-fpm-alpineDebian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.15-apacheDebian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.4.15-fpmChangeLog
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