PHP 8.4.0alpha3 is an old release of PHP 8.4 series. Using the latest version PHP 8.4.14 is highly recommended.
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.0alpha3 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0alpha3How 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.0alpha3-x64NTS.zip (31.28 MiB)
php-8.4.0alpha3-x86NTS.zip (28.11 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.0alpha3-x64TS.zip (31.43 MiB)
php-8.4.0alpha3-x86TS.zip (28.18 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.0alpha3-cli-alpineDebian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.4.0alpha3-cliPHP 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.0alpha3-fpm-alpineDebian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.0alpha3-apacheDebian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.4.0alpha3-fpmCommit List
Arnaud Le Blanc
- Use
zend_std_build_properties()to access zend_object.properties in 1fbb666545 - Followup GH-14996 in GH-15062
- Hint the opcache shm mapping location only when JIT is enabled in 929536b697
- Fix build on platforms without JIT support in GH-15069
- Fix test on alpine/musl in GH-15072
- Fix destruction of generator running in fibers during shutdown in GH-15158
Bob Weinand
- Fix GH-13817: Segmentation fault for enabled observers after pass 4 in a18df90a8b
Calvin Buckley
- Gate
SOCK_DCCPbehind its own ifdef in GH-15031
Christoph M. Becker
- Drop support for OpenSSL < 1.1.0 on Windows in f590b34530
- Revert "Skip
bug45161.phpton Windows" in 355baf982e - Update the php-sdk-binary-tools to php-sdk-2.3.0 in 93a9a9b4a4
- Port "gd2: use existing
overflow2()rather than ad-hoc version" in GH-15090 - Fix GH-15087
IntlChar::foldCase()'s$optionis not optional in 5fbda73099 - Fix GH-15094:
php_random_default_engine()is not C++ conforming in da72ac11f6 - Add missing cstddef include for C++ builds in ab449a7e46
- Fix type incompatibility in assignment in af789afbe8
David CARLIER
- main: update Winsock api version to 2.2 in GH-14909
- zend build making sigjmp_buf and api check as mandatory. in GH-14942
ext/pgsql: db metadata simplification for table names. in GH-15036- Fix GH-15102:
ext/pgsqluse after free on persistent connection renewal. in GH-15115
David Carlier
ext/curl:curl_errorusingcurl_easy_strerrorifCURLOPT_ERRORBUFFERin efd00b8ff0ext/pgsql: pg_convert/pg_insert/pg_update/pg_delete caching regexes in ba54cebb44- sapi/fpm: retiring solaris /dev/poll support proposal in 3713c02803
ext/intl:SpoofChecker::setAllowedCharssupport in 21418b5bb5- Fix GH-14780: p(f)sockopen overflow on timeout argument in ba909d7c43
- fix GH-14785 pedantic error in 350c10d985
ext/readline: fix global readline vars when updating rl_line_buffer in a7d856d9bf
Dmitry Stogov
- Update IR in 7b25cac32b
- Regenerate FFI parser using HEAD version of LLK in 13e9b40517
- Fix Windows build in d6efff7254
- Workaraound against false positive GCC array bounds error in GH-15078
- Fix GH-15101: _ir_RSTORE: Assertion `ctx->control' in GH-15153
Gina Peter Banyard
ext/spl: Add ArrayObject test with property hooks in GH-15005ext/gmp: Make GMP class final in GH-15121
Ilija Tovilo
- De-duplicate readonly property modification error message in GH-14972
- Fix indirect readonly error messages in GH-14979
- Fix comments between -> and keyword in b368db204f
- Throw error for recursive comparison, instead of fatal in GH-14989
- Compile in opcache without COMPILE_IGNORE_INTERNAL_CLASSES in GH-15025
- Fix throw in IS_IDENTICAL in JIT in GH-15103
Julien Voisin
- Add a check for required extensions in
benchmark.phpin GH-14811
Levi Morrison
- Fix warnings in session/spl in 0956267c08
LoongT4o
- Fix the JIT buffer relocation failure at the corner case in GH-11266
lwlinux
sapi/cli/php_cli.c: fix typos in GH-15057
Michael Orlitzky
- ext/dba/tests: sort expected test output in GH-14962
Niels Dossche
- Fix references in
request_parse_body()options array in f58a3c392f - Use fast ZPP for ParentNode manipulation methods in GH-14981
- Delete
bug78987.phpttest in GH-14982 - Fix bug #55639: Digest autentication dont work in 911dc5b46c
- Resolve TODOs in
ext/domaround nullable content in GH-14999 - Optimize
ext/dom$wholeText in GH-15001 - Don't open-code string value accesses in xpath in GH-15007
- Fix trampoline leak in xpath callables in a59103feed
- Avoid duplicating the filename string when profiling in XSL in GH-15010
- Convert forgotten efree to
zend_string_releasein 81da53fccd - Cleanup
DOMAttr::isId()in GH-15016 - Deduplicate NULL checks in
ext/domin GH-15015 - Add assertion to error path in
streams.cin GH-15027 - Fix GH-15020: Memory leak in
Zend/Optimizer/escape_analysis.cin 03d73182d9 - Fix GH-15023: Memory leak in
Zend/zend_ini.cin 8c19efdc97 - Fix GH-15028: Memory leak in
ext/phar/stream.cin 5996227f88 - Remove impossible condition in 74116a4ade
- Move stricterror fetch to
dom_child_removal_preconditions()body in 29466223d0 - Convert more common methods in dom/node.c to fast ZPP in GH-15043
- Remove bogus tree setting code from parentnode/tree.c in GH-15044
- Fix memory leaks in
ext/tidybasedir restriction code in 8de7ccb29b - Use OBJ_RELEASE instead of ZVAL_OBJ + zval_ptr_dtor in
php_dom.cin GH-15052 - Factor out object creation code in
ext/tidyin c4e1f2b4e8 - Throw instead of silently failing when creating a too long text node in 9435f4d55b
- Update Lexbor in c952f5625a
- Make more pointers const in
ext/tidyin e736d7cd8a - Consistently check
zend_resultin the same way in 09c0455f64 - Use RETVAL_BOOL or RETURN_BOOL in
ext/tidyin 1d045a5c97 - Fix error handling in tidy constructor in 186788f149
- Remove useless return in 9b78e5ff1c
- Fix GH-15034: Integer overflow on
stream_notification_callbackbyte_max parameter with files bigger than 2GB in cfcc2a3fda - Fix GH-14286 (ffi enum type (when enum has no name) make memory leak) in c0de7214aa
- Fix passing non-finite timeout values in stream functions in fdcfd62b9b
- Fix bogus fallthrough path in
firebird_handle_get_attribute()in b8e9c5ba6a - Fix uninitialized memory in
network.cin 40551dd74b - Add
tidyNode::getNextSibling()andtidyNode::getPreviousSibling()in ad452086d9 - Fix CI failure after Curl update in GH-15124
- Avoid string duplications in simplexml in GH-15122
- Fix nightly failure in test variation due to number of temp variables varying when observers are enabled in 4df858602a
- Fix GH-15137: Unexpected null pointer in
Zend/zend_smart_str.hin GH-15138 - Fix CI failure on macOS after Curl update in fdae7c23f0
- Fix GH-15123: var_dump doesn't actually work on XMLReader in GH-15130
Peter Kokot
- Fix xmlreader extension phpize build in 71c520c74f
- Autotools: Fix Autoconf syntax (erroneous dnl) in GH-14987
- Autotools: Expand m4_normalize sooner in GH-15018
- Autotools: Quote M4 arguments in GH-15033
- Autotools: Quote M4 arguments in GH-15045
- Autotools: Sync CS in
ext/standardprocess check in GH-15049 - Add upgrading note about Autoconf cache variables in GH-14985
- Append -Wno-implicit-fallthrough flag conditionally in GH-13331
- Autotools: Fix unused result and variables warnings in flush IO check in GH-15056
- Autotools: Append rt library to FPM_EXTRA_LIBS in GH-15059
- Sync required phar dependencies in GH-15058
- Autotools: Check for crypt and cryptr with AC* macros in GH-15060
- Autotools: Normalize
ext/domsources in GH-15073 - Autotools: Normalize
ext/gdsources in GH-15086 - Autotools: Normalize pcre sources in GH-15085
- Autotools: Normalize
ext/opcachesources in GH-15083 - Autotools: Sync CS in opcache Capstone check in GH-15084
- Autotools: Quote
PHP_NEW_EXTENSIONarguments in GH-15081 - Autotools: Normalize
ext/fileinfosources in GH-15082 - Autotools: Normalize
ext/mbstringinstalled headers in GH-15097 - Add pcre dependency as required to
ext/filterin GH-15099 - Autotools: Quote
PHP_CONFIG_NICEarguments in fa7ee84f0b - Autotools: Quote
PHP_ADD_LIB*arguments in GH-15112 - Autotools: Fix rl_erase_empty_line check in GH-15109
- Autotools: Normalize DTrace sources argument in GH-15111
- Autotools: Quote macro arguments in a7f0fe1f33
- Autotools: Quote AC_CHECK_LIB arguments in GH-15116
- Autotools: Sync
PHP_SETUP_*M4 macros in GH-15117 - Autotools: Quote M4 macro arguments in ef8e792962
- Autotools: Replace
PHP_DEF_HAVEwith AC_DEFINE_UNQUTED in GH-15119 - Autotools: Quote and fix
PHP_SELECT_SAPIarguments in GH-15118 - Autotools: Sync CS in XML related extensions in GH-15110
- Autotools: Remove dead code in GH-15128
- Autotools: Simplify
PHP_ALWAYS_SHAREDmacro in GH-15129 - Autotools: Replace
PHP_EXT_DIRwith$ext_dirin GH-15133 - Autotools: Sync
PHP_EXT_*M4 macros in GH-15134 - Autotools: Fix
ext/standardsources in GH-15131 - Autotools: Quote
PHP_CHECK_LIBRARYarguments in GH-15136 - Autotools: Normalize and quote all
PHP_NEW_EXTENSIONarguments in GH-15144 - Autotools: Append hash and opcache build directories in GH-15132
- Autotools: Normalize headers arguments in GH-15149
- Autotools: Quote
PHP_ADD_SOURCES*macros arguments in GH-15146 - Autotools: Sync shared argument CS in GH-15141
- Sync HAVE_ICONV preprocessor macro usage in GH-15148
- Remove duplicate
ZEND_ENABLE_STATIC_TSRMLS_CACHEflag in GH-15080 - Autotools: Update skeleton extension config.m4 template in GH-15147
- Autotools: Move HAVE_DTRACE to configure.ac in GH-15160
- Autotools: Sync CS in bz2 extension in GH-15163
- Autotools: Sync CS in enchant extension in 0970fd439a
- Autotools: Fix xml extension dependency in GH-15162
- Autotools: Remove unused variable FREETYPE2_FOUND in 79af1b5280
Pol Dellaiera
- Fix: add missing
PHPAPIin GH-15142
Saki Takamachi
- Updated firebird version in windows ci in GH-14912
ext/pdo_firebird: Added Pdo`Firebird::ATTR_API_VERSION` in GH-14916- Fixed parent class of stub in GH-14990
ext/bcmath: Moved macros and added a test in 3c9ab6eb71ext/pdo_firebird: Do not implement new constants in PDO core in GH-14995ext/pdo_firebird: Added getApiVersion() and removed from getAttribute in GH-15004- random: Optimize
Randomizer::getBytesFromString()in GH-14894 - Zend: Add
ZEND_BYTES_SWAP32/ZEND_BYTES_SWAP64in GH-14910 - Fixed segmentation fault when attribute value was not set in GH-15065
round(): Corrected test name and fixed UPGRADING in GH-14943- Update versions for PHP 8.4.0alpha3 in 5e0c372de0
Simonov Denis
- PDO_Firebird: Supported Firebird 4.0 datatypes in GH-14897