PHP 8.4.0beta3: Downloads, Changelog, News

Release Information

Release
8.4.0beta3
PHP Version
PHP 8.4
Release Date
Release Type
Bug Fix Release
Release Status
QA Release
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.
PHP 8.4.0RC2 is the latest QA release in PHP 8.4.

Downloads

Source Code

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

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

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

ChangeLog

Core

  • Exiting a namespace now clears seen symbols.
  • The exit (and die) language constructs now behave more like a function. They can be passed liked callables, are affected by the strict_types declare statement, and now perform the usual type coercions instead of casting any non-integer value to a string. As such, passing invalid types to exit/die may now result in a TypeError being thrown.

CURL

  • Added CURLOPT_TCP_KEEPCNT to set the number of probes to send before dropping the connection.

Hash

  • Fix GH-15384 (Build fails on Alpine / Musl for amd64).

Sockets

  • Added SO_BINDTOIFINDEX to bind a socket to an interface index.

Standard

  • php_uname() now throws ValueErrors on invalid inputs.

Commit List

Calvin Buckley

  • Update versions for PHP 8.4.0beta3 in 639628cecb

Christoph M. Becker

David Carlier

  • Checks getrandom availability on solaris in 5c9c275743
  • Checks getrandom availability on solaris in f1e5c63837

Gina Peter Banyard

  • Replace uses of php_dirname() with zend_dirname() in GH-15393
  • [RFC] Convert exit (and die) from language constructs to functions in GH-13483
  • ext/standard/info.c: Throw ValueErrors on invalid inputs to php_uname() in GH-15385
  • ext/standard/php_string.h: Remove declarations that do not have an implementation in GH-15402
  • ext/dba: Remove arg num check prior to ZPP checks in GH-15401

Gina Peter Bnayard

  • ext/standard/info.c: Minor refactoring to php_get_windows_name() in ac7ed28573
  • ext/standard/info.c: Minor refactoring to php_get_uname() in d63caf006b
  • ext/standard/info.c: Remove unreachable conditional branch in 0b8fbacd58

Ilija Tovilo

Kamil Tekiela

  • Mention in UPGRADING the MYSQLIREFRESH* constants in 8448db84a8

Peter Kokot

  • Autotools: Use AS_* macros in embed SAPI in GH-15387
  • Add configure phase dependencies to mysqlnd extension in GH-15380
  • Autotools: Substitute PHP_EMBED_TYPE conditionally in GH-15396
  • Autotools: Fix typo in FPM TCP_CONNECTION_INFO check in GH-15411
  • Autotools: Sync CS in sapi/litespeed in GH-15409
  • Autotools: Sync CS in sapi/cli in GH-15410

Remi Collet

  • Completely remove session.sid_length and session.sid_bits_per_character from INI files in GH-15382
  • Fix test expectation for "Built by..." in GH-15383

Tim Düsterhus

  • hash: Consistently check for PHP_HASH_INTRIN_SHA_* to guard compilation of SHA256_Transform_shani in GH-15404
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 💜