Release Information
- 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.0beta5 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 (
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.0beta3-x64NTS.zip (31.3 MiB)
php-8.4.0beta3-x86NTS.zip (28.13 MiB)
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.0beta3-x64TS.zip (31.45 MiB)
php-8.4.0beta3-x86TS.zip (28.20 MiB)
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
- Fix test expectation in 1b52ecd78a
- Drop FASTCALL on variadic functions (GH-15389) in 65c6d72319
- Remove detection of unsupported Windows versions (GH-15399) in 390088bf55
- GetSystemTimePreciseAsFileTime() is now always available (GH-15400) in 25afbdb09e
- Voidify
getfilesystemtime()
(GH-15413) in ec2655f88b
David Carlier
- Checks getrandom availability on solaris in 5c9c275743
- Checks getrandom availability on solaris in f1e5c63837
Gina Peter Banyard
- Replace uses of
php_dirname()
withzend_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
- Disable LSAN for crashing SOAP tests (GH-14562) in 65a101f3a7
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