PHP 8.4.0RC2: Downloads, Changelog, News

Release Information

Release
8.4.0RC2
PHP Version
PHP 8.4
Release Date
Release Type
Security Update
Release Status
QA Release Latest
Branch Status
Upcoming Release

PHP 8.4 is a development version, and is not recommended for production use. PHP 8.4 is scheduled to reach General Availability on 2024-11-21. This is the latest QA release in the series.

Downloads

Source Code

Git Clone
Use Git to clone the 8.4.0RC2 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0RC2
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.0RC2-cli-alpine

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

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.0RC2-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.0RC2-fpm

ChangeLog

CGI

Calendar

  • Fixed GH-16240: jdtounix overflow on argument value.
  • Fixed GH-16241: easter_days/easter_date overflow on year argument.
  • Fixed GH-16263: jddayofweek overflow.
  • Fixed GH-16234: jewishtojd overflow.

CLI

  • Fixed bug GH-16137: duplicate http headers when set several times by the client.

Core

  • Fixed bug GH-16040 (Use-after-free of object released in hook).
  • Fixed bug GH-16054 (Segmentation fault when resizing hash table iterator list while adding).
  • Fixed bug GH-15905 (Assertion failure for TRACK_VARS_SERVER).
  • Fixed bug GH-15907 (Failed assertion when promoting Serialize deprecation to exception).
  • Fixed bug GH-15851 (Segfault when printing backtrace during cleanup of nested generator frame).
  • Fixed bug GH-16026 (Reuse of dtor fiber during shutdown).
  • Fixed bug GH-15999 (zend_std_write_property() assertion failure with lazy objects).
  • Fixed bug GH-15866 (Core dumped in Zend/zend_generators.c).
  • Fixed bug GH-15960 (Foreach edge cases with lazy objects).
  • Fixed bug GH-16188 (Assertion failure in Zend/zend_exceptions.c).
  • Fixed bug GH-16233 (Observer segfault when calling user function in internal function via trampoline).
  • Fixed bug GH-16185 (Various hooked object iterator issues).

DOM

  • Fixed bug GH-16039 (Segmentation fault (access null pointer) in ext/dom/parentnode/tree.c).
  • Fixed bug GH-16149 (Null pointer dereference in DOMElement->getAttributeNames()).
  • Fixed bug GH-16151 (Assertion failure in ext/dom/parentnode/tree.c).
  • Fixed bug GH-16190 (Using reflection to call Dom\Node::__construct causes assertion failure).
  • Fixed bug GH-16150 (Use after free in php_dom.c).
  • Fixed bug GH-16152 (Memory leak in DOMProcessingInstruction/DOMDocument).
  • Fix edge-case in DOM parsing decoding.

FPM

JSON

  • Fixed bug GH-15168 (stack overflow in json_encode()).

GD

  • Fixed bug GH-16232 (bitshift overflow on wbmp file content reading / fix backport from upstream).
  • Fixed bug GH-12264 (overflow/underflow on imagerotate degrees value)
  • Fixed bug GH-16274 (imagescale underflow on RBG channels / fix backport from upstream).

LDAP

  • Fixed bug GH-16032 (Various NULL pointer dereferencements in ldap_modify_batch()).
  • Fixed bug GH-16101 (Segfault in ldap_list(), ldap_read(), and ldap_search() when LDAPs array is not a list).
  • Fix GH-16132 (php_ldap_do_modify() attempts to free pointer not allocated by ZMM.).
  • Fix GH-16136 (Memory leak in php_ldap_do_modify() when entry is not a proper dictionary).

MBString

  • Fixed bug GH-16261 (Reference invariant broken in mb_convert_variables()).

Opcache

  • Fixed bug GH-16009 (Segmentation fault with frameless functions and undefined CVs).
  • Fixed bug GH-16186 (Assertion failure in Zend/zend_operators.c).

PCRE

  • Fixed bug GH-16184 (UBSan address overflowed in ext/pcre/php_pcre.c).

PHPDBG

  • Fixed bug GH-16181 (phpdbg: exit in exception handler reports fatal error).
  • Fixed bug GH-16041 (Support stack limit in phpdbg).

Reflection

  • Fixed bug GH-16122 (The return value of ReflectionFunction::getNamespaceName() and ReflectionFunction::inNamespace() for closures is incorrect).
  • Fixed bug GH-16187 (Assertion failure in ext/reflection/php_reflection.c).
  • Fixed bug GH-16162 (No ReflectionProperty::IS_VIRTUAL)

SAPI

SOAP

  • Fixed bug GH-16237 (Segmentation fault when cloning SoapServer).
  • Fix Soap leaking http_msg on error.
  • Fixed bug GH-16256 (Assertion failure in ext/soap/php_encoding.c:460).
  • Fixed bug GH-16259 (Soap segfault when classmap instantiation fails).

Standard

  • Fixed bug GH-16053 (Assertion failure in Zend/zend_hash.c).
  • Fixed bug GH-15169 (stack overflow when var serialization in ext/standard/var).

Windows

  • Fixed bug GH-16199 (GREP_HEADER() is broken).

Commit List

Arnaud Le Blanc

Calvin Buckley

  • Fix regression on platforms without ZEND_CHECK_STACK_LIMIT set (8.4) in GH-16285
  • Update versions for PHP 8.4.0RC2 in 1f914f9084

Chris Brown

  • Fix small typo in UPGRADING in GH-16141

Christoph M. Becker

Daniel Scherzer

David Carlier

Dmitry Stogov

Gina Peter Banyard

Ilija Tovilo

  • Fix nightly for 8.2 in 50d5e96edb
  • Add missing CI services for 8.2 in b7ee484f2b
  • Fix use-after-free of object released in hook in 12844f96e2
  • Fix missing libavif-dev in asan nightly in 271b9e685e
  • Switch asan build to Ubuntu 24.04 in 91c06790de
  • Remove now unused llvm installation in asan build in 6f7ec6a747
  • Fix failed assertion when promoting Serialize deprecation to exception in 15a0c3a9d4
  • Reduce regex backtracking in phpinfo.phpt in c4c45da4b9
  • Fix printing backtrace of fake generator frame in 706bcdbc1a
  • Fix various hooked object iterator issues in d76ef13757

Jakub Zelenka

Luís Cobucci

  • Reproduce unexpected MySQL warnings for binary values in 93c68caeb5

Matteo Beccati

  • PDO_MYSQL: Properly quote binary strings in cba92beac3

Máté Kocsis

  • Fix property_exists() and unset() for XMLReader in GH-16079

Niels Dossche

Peter Kokot

Remi Collet

Saki Takamachi

  • Added PHP-8.4 to push workflow in GH-16045

Tim Düsterhus

  • reflection: Fix the return value of ReflectionFunction::{getNamespaceName,inNamespace}() for closures in GH-16129

Yuya Hamada

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 💜