PHP 8.4.0RC4: Downloads, Changelog, News

Release Information

Release
8.4.0RC4
PHP Version
PHP 8.4
Release Date
Release Type
Bug Fix Release
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.0RC4 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0RC4
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.0RC4-cli-alpine

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

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

ChangeLog

BcMath

  • Fixed bug GH-16265 (Added early return case when result is 0)
  • Fixed bug GH-16262 (Fixed a bug where size_t underflows)

Core

  • Fixed bug GH-16574 (Incorrect error "undefined method" messages).
  • Fixed bug GH-16577 (EG(strtod_state).freelist leaks with opcache.preload).
  • Fixed bug GH-16615 (Assertion failure in zend_std_read_property).
  • Fixed bug GH-16342 (Added ReflectionProperty::isLazy()).
  • Fixed bug GH-16648 (Use-after-free during array sorting).

Date

  • Fixed bug GH-14732 (date_sun_info() fails for non-finite values).

DOM

  • Fixed bug GH-16594 (Assertion failure in DOM -> before).
  • Fixed bug GH-16593 (Assertion failure in DOM->replaceChild).
  • Fixed bug GH-16595 (Another UAF in DOM -> cloneNode).

FPM

  • Fixed bug GH-16628 (FPM logs are getting corrupted with this log statement).

GD

  • Fixed bug GH-16559 (UBSan abort in ext/gd/libgd/gd_interpolation.c:1007).

GMP

  • Fixed segfaults and other issues related to operator overloading with GMP objects.

Opcache

  • Fixed bug GH-16572 (Incorrect result with reflection in low-trigger JIT).

OpenSSL

  • Fix various memory leaks on error conditions in openssl_x509_parse().

PDO

  • Fixed bug GH-16167 (Prevent mixing PDO sub-classes with different DSN).
  • Fixed bug GH-16314 ("Pdo\Mysql object is uninitialized" when opening a persistent connection).

PDO_ODBC

  • Fixed bug GH-16450 (PDO_ODBC can inject garbage into field values).

Reflection

  • Fixed bug GH-16601 (Memory leak in Reflection constructors).

Session

  • Fixed bug GH-16590 (UAF in session_encode()).

SPL

  • Fixed bug GH-16588 (UAF in Observer->serialize).
  • Fix GH-16477 (Segmentation fault when calling debugInfo() after failed SplFileObject::constructor).
  • Fixed bug GH-16589 (UAF in SplDoublyLinked->serialize()).
  • Fixed bug GH-16604 (Memory leaks in SPL constructors).
  • Fixed bug GH-16646 (UAF in ArrayObject::unset() and ArrayObject::exchangeArray()).

SysVShm

  • Fixed bug GH-16591 (Assertion error in shm_put_var).

Commit List

Arnaud Le Blanc

  • Fix tests: Prevent stack overflow during dtor in f3e87e2a6d
  • Fix assertion failure in zend_std_read_property in 3d3b22ddf2
  • Add ReflectionProperty::isLazy() in 54a40f3bde

Bob Weinand

  • Fix test without extra curl features in 824c81602b

Calvin Buckley

Christoph M. Becker

David Carlier

  • ext/gmp: gmp_pow fix FPE with large values in e0a0e216a9
  • Fix GH-14687 segfault on debugging a freed SplObjectIterator instance in eeec0939e0
  • Fix GH-16592 msg_send() crashes when the type does not serialize as expected in 90aac521fd

Gina Peter Banyard

  • Fix GH-16477 (Segmentation fault when calling debugInfo() after failed SplFileObject::constructor) in 9f5b5e34c3
  • Fix GH-16477 (Segmentation fault when calling debugInfo() after failed SplFileObject::constructor) in a19029fc8b
  • Fix GH-16477 (Segmentation fault when calling debugInfo() after failed SplFileObject::constructor) in 5d993e9641
  • ext/gmp: Add behavioural tests for operator overloading in fe02fd5095
  • ext/gmp: Fix segfault when null is encountered on an overloaded operator in 5253647500

Ilija Tovilo

  • Fix gh16508.phpt test expectation in dded6fdcad
  • Backport CI fixes to security branches in 25c0993902
  • Fix icu dependency for macos build in e3de1a1a21
  • Backport nightly.yml and nightly_matrix.php to PHP-8.1 in 27e8860594
  • [CI] Backport usage of db service for 8.1 in 560a585117
  • Partial backport of e7462bf in ed041c3443
  • Remove -Werror for libmysql test on 8.1 only in 769947648e
  • Fix array going away during sorting in 2bdce61390
  • Postpone zend_array_sort() in ext-intl in 845cdbce67
  • Fix use-after-free in ArrayObject::unset() with destructor in 8910ac800d
  • Also fix same issue in ArrayObject::exchangeArray() in f7222bd2de
  • Add NEWS entry in 418f820f5d

Máté Kocsis

  • Fix GH-16131: Prevent mixing PDO sub-classes with different DSN in 5892991941
  • Fix GH-16314 "Pdo\Mysql object is uninitialized" when opening a persistent connection in GH-16369

Niels Dossche

Saki Takamachi

  • Added early return case when result is 0 in GH-16697
  • Fixed a bug where size_t underflows in GH-16696
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 💜