PHP 8.4.0alpha3 is an old release of PHP 8.4 series. Using the latest version PHP 8.4.3 is highly recommended.
PHP 8.4 continues to receive bug fixes and security fixes until 2026-12-31.
Downloads
Source Code
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0alpha3
./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
Docker/Podman Containers
docker pull php:8.4.0alpha3-cli-alpine
docker pull php:8.4.0alpha3-cli
docker pull php:8.4.0alpha3-fpm-alpine
docker pull php:8.4.0alpha3-apache
docker pull php:8.4.0alpha3-fpm
Commit 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_DCCP behind its own ifdef in GH-15031
Christoph M. Becker
- Drop support for OpenSSL < 1.1.0 on Windows in f590b34530
- Revert "Skip
bug45161.phpt
on 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 $option is 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/pgsql
use after free on persistent connection renewal. in GH-15115
David Carlier
ext/curl
: curl_error using curl_easy_strerror if CURLOPT_ERRORBUFFER in 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::setAllowedChars
support 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.php
in 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.phpt
test in GH-14982 - Fix bug #55639: Digest autentication dont work in 911dc5b46c
- Resolve TODOs in
ext/dom
around 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_release
in 81da53fccd - Cleanup
DOMAttr::isId()
in GH-15016 - Deduplicate NULL checks in
ext/dom
in GH-15015 - Add assertion to error path in
streams.c
in GH-15027 - Fix GH-15020: Memory leak in Zend/Optimizer/escape_analysis.c in 03d73182d9
- Fix GH-15023: Memory leak in Zend/zend_ini.c in 8c19efdc97
- Fix GH-15028: Memory leak in ext/phar/stream.c in 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/tidy
basedir restriction code in 8de7ccb29b - Use OBJ_RELEASE instead of ZVAL_OBJ + zval_ptr_dtor in
php_dom.c
in GH-15052 - Factor out object creation code in
ext/tidy
in 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/tidy
in e736d7cd8a - Consistently check
zend_result
in the same way in 09c0455f64 - Use RETVAL_BOOL or RETURN_BOOL in
ext/tidy
in 1d045a5c97 - Fix error handling in tidy constructor in 186788f149
- Remove useless return in 9b78e5ff1c
- Fix GH-15034: Integer overflow on
stream_notification_callback
byte_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.c
in 40551dd74b - Add tidyNode::getNextSibling() and tidyNode::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.h in 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/standard
process 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/dom
sources in GH-15073 - Autotools: Normalize
ext/gd
sources in GH-15086 - Autotools: Normalize pcre sources in GH-15085
- Autotools: Normalize
ext/opcache
sources in GH-15083 - Autotools: Sync CS in opcache Capstone check in GH-15084
- Autotools: Quote
PHP_NEW_EXTENSION
arguments in GH-15081 - Autotools: Normalize
ext/fileinfo
sources in GH-15082 - Autotools: Normalize
ext/mbstring
installed headers in GH-15097 - Add pcre dependency as required to
ext/filter
in GH-15099 - Autotools: Quote
PHP_CONFIG_NICE
arguments 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_HAVE
with AC_DEFINE_UNQUTED in GH-15119 - Autotools: Quote and fix
PHP_SELECT_SAPI
arguments in GH-15118 - Autotools: Sync CS in XML related extensions in GH-15110
- Autotools: Remove dead code in GH-15128
- Autotools: Simplify
PHP_ALWAYS_SHARED
macro in GH-15129 - Autotools: Replace
PHP_EXT_DIR
with $ext_dir in GH-15133 - Autotools: Sync
PHP_EXT_*
M4 macros in GH-15134 - Autotools: Fix
ext/standard
sources in GH-15131 - Autotools: Quote
PHP_CHECK_LIBRARY
arguments in GH-15136 - Autotools: Normalize and quote all
PHP_NEW_EXTENSION
arguments 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_CACHE
flag 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
PHPAPI
in 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_SWAP64
in 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