PHP 8.4.6: Downloads, Changelog, News

Release Information

Release
8.4.6
PHP Version
PHP 8.4
Release Date
Release Type
Security Update
Release Status
Latest
Branch Status
Supported (Latest)

Latest PHP release in the latest version. 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.6 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.6
How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (./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.
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.

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.6-cli-alpine

Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.4.6-cli
PHP 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.6-fpm-alpine

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.6-apache

Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.4.6-fpm

ChangeLog

BCMath

  • Fixed pointer subtraction for scale.

Core

  • Fixed property hook backing value access in multi-level inheritance.
  • Fixed accidentally inherited default value in overridden virtual properties.
  • Fixed bug GH-17376 (Broken JIT polymorphism for property hooks added to child class).
  • Fixed bug GH-17913 (ReflectionFunction::isDeprecated() returns incorrect results for closures created from magic __call()).
  • Fixed bug GH-17941 (Stack-use-after-return with lazy objects and hooks).
  • Fixed bug GH-17988 (Incorrect handling of hooked props without get hook in get_object_vars()).
  • Fixed bug GH-17998 (Skipped lazy object initialization on primed SIMPLE_WRITE cache).
  • Fixed bug GH-17998 (Assignment to backing value in set hook of lazy proxy calls hook again).
  • Fixed bug GH-17961 (use-after-free during dl()'ed module class destruction).
  • Fixed bug GH-15367 (dl() of module with aliased class crashes in shutdown).
  • Fixed OSS-Fuzz #403308724.
  • Fixed bug GH-13193 again (Significant performance degradation in 'foreach').

DBA

  • Fixed assertion violation when opening the same file with dba_open multiple times.

DOM

  • Fixed bug GH-17991 (Assertion failure dom_attr_value_write).
  • Fix weird unpack behaviour in DOM.
  • Fixed bug GH-18090 (DOM: Svg attributes and tag names are being lowercased).
  • Fix xinclude destruction of live attributes.

Fuzzer

  • Fixed bug GH-18081 (Memory leaks in error paths of fuzzer SAPI).

GD

  • Fixed bug GH-17984 (calls with arguments as array with references).

LDAP

  • Fixed bug GH-18015 (Error messages for ldap_mod_replace are confusing).

Mbstring

  • Fixed bug GH-17989 (mb_output_handler crash with unset http_output_conv_mimetypes).

Opcache

  • Fixed bug GH-15834 (Segfault with hook "simple get" cache slot and minimal JIT).
  • Fixed bug GH-17966 (Symfony JIT 1205 assertion failure).
  • Fixed bug GH-18037 (SEGV Zend/zend_execute.c).
  • Fixed bug GH-18050 (IN_ARRAY optimization in DFA pass is broken).
  • Fixed bug GH-18113 (stack-buffer-overflow ext/opcache/jit/ir/ir_sccp.c).
  • Fixed bug GH-18112 (NULL access with preloading and INI option).
  • Fixed bug GH-18107 (Opcache CFG jmp optimization with try-finally breaks the exception table).

PDO

  • Fix memory leak when destroying PDORow.

PGSQL

  • Fixed bug GH-18148 (pg_copy_from() regression with explicit \n terminator due to wrong offset check).

Standard

  • Fix memory leaks in array_any() / array_all().

SOAP

  • Fixed bug #66049 (Typemap can break parsing in parse_packet_soap leading to a segfault) .

SPL

  • Fixed bug GH-18018 (RC1 data returned from offsetGet causes UAF in ArrayObject).

Treewide

  • Fixed bug GH-17736 (Assertion failure zend_reference_destroy()).

Windows

  • Fixed bug GH-17836 (zend_vm_gen.php shouldn't break on Windows line endings).

Commit List

Arnaud Le Blanc

  • Destroy temporary module classes in reverse order in 1c182674b0
  • Disable ZEND_RC_MOD_CHECK() while loading shared extension in FPM in c531f3d79b

Calvin Buckley

  • Attempt at ppc64 CI in GH-17945
  • Skip mysqli/tests/bug73462 on PPC CI in GH-17971
  • Remove "Notify Slack" on ppc nightly workflow in GH-17993
  • Update versions for PHP 8.4.6 in 95809409bb

Christian Schneider

  • Fix bug and add test for dba_open same file twice in GH-17979

Daniel Scherzer

David Carlier

  • Fix GH-17921 socket_read/socket_recv overflows on buffer size in 8cbc0c57b7
  • Fix GH-17984: gd calls with array arguments in 07ceadf7d9
  • ext/intl: fix locale_compose/locale_lookup to be able to deal with references in c3fc94c4b8
  • ext/intl: Fix dateformat_format when the time is an array of references in f34859cb90
  • ext/intl: Fix Uconverter::transcode with substitutes as references in 005c7b5797

Derick Rethans

Dmitry Stogov

Eric Mann

Ilija Tovilo

  • Fix property hook backing value access in multi-level inheritance in 7a55116f12
  • Fix accidentally inherited default value in overridden virtual properties in e0c69dde02
  • Fix circumvented added hooks in JIT in 376e90fbf2
  • Fix varying pgsql error message in 8be263d2a1
  • Upgrade i386 branch to Ubuntu 22.04 in 294888053a
  • Fix flaky DatePeriod test in 8a699372f2
  • Upgrade security branches to Ubuntu 22.04 in 5fcc8d4cd1
  • Fix incorrect handling of hooked props without get hook in get_object_vars() in 868959350f
  • Fix skipped lazy init on primed SIMPLE_WRITE in 9acfe6e11c
  • Fix lazy proxy calling set hook twice in 8254e8de31
  • Suppress snmp lib memory leak, skip ASAN tests in b0858427aa
  • Increase CircleCI no_output_timeout in ee7fcf2a07
  • Use-after-free for ??= due to incorrect live-range calculation in ef2c459941
  • Fix flaky connection count in mysqli test in 00ebd2d7f2
  • Fix mysql test date flakiness in 45fc03c190
  • Fix IN_ARRAY optimization in 56841998de
  • Fix segfault when evaluating const expr default value of child prop with added hooks in d5bdf8f508
  • Backport intl test changes for ICU 77 in d4c548cf42

Jakub Zelenka

Katherine456719

Kévin Dunglas

Niels Dossche

Remi Collet

Saki Takamachi

  • Fixed pointer subtraction for scale in GH-17986
  • Fixed pdo_firebird_handle_factory to check ret when starting a transaction in GH-17632

Tim Düsterhus

Subscribe to PHP.Watch newsletter for monthly updates

You will receive an email on last Wednesday of every month and on major PHP releases with new articles related to PHP, upcoming changes, new features and what's changing in the language. No marketing emails, no selling of your contacts, no click-tracking, and one-click instant unsubscribe from any email you receive.

Support PHP.Watch — If you find the articles, version information, Codex, and other PHP.Watch contributions useful, consider supporting through GitHub Sponsors. Your sponsorship helps dedicate more time to creating valuable content and improving the PHP community. Together, we can keep the momentum going — thank you for your support!

Thanks to the highest tier sponsor: @TomasVotruba for your generous support to keep PHP.Watch moving 💜