PHP 8.4.0alpha2 is an old release of PHP 8.4 series. Using the latest version PHP 8.4.2 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.0alpha2
./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.0alpha2-cli-alpine
docker pull php:8.4.0alpha2-cli
docker pull php:8.4.0alpha2-fpm-alpine
docker pull php:8.4.0alpha2-apache
docker pull php:8.4.0alpha2-fpm
Commit List
Andy Postnikov
- Fix build for armv7 in GH-14801
Arnaud Le Blanc
- Fix test race condition in 070779c874
- Fix stack limit on ASAN/MSAN in GH-14771
- Fix stack limit on MSAN in GH-14829
- Fix stack limit under valgrind in GH-14818
Ayesh Karunaratne
ext/standard
: changehighlight_string()
/print_r
stub return type fromstring|bool
tostring|true
in GH-14959- Build/Windows: Update the Windows icon as svg and build derivatives from it in e7c16d2a6a
Calvin Buckley
- Handle BSD checksum and file utilities in GH-14690
- Declare that this test needs iconv extension in 43e3f577b9
- Check for iODBC and unixODBC with pkg-config in PDO_ODBC in GH-14963
- Update versions for PHP 8.4.0alpha2 in b0f97b872f
Christoph M. Becker
- Make
bug49278.phpt
more resilient in de354683a0 - Update MSVC compiler version detection in GH-14810
- Add test case for GH-13774 in 6d0db52896
- Fix skip condition of
gh13082.phpt
in 02a60be24d
David Carlier
- Fix GH-14775: range overflow on negative step in 15bea9ed74
- Fix GH-14774 time_sleep_until overflow in 237518763f
ext/gd
: checking imagescale/imagefilter invalid values in 23a55babb4ext/pcntl
adding Pcntl namespace for Qos class in 17cf7b381a
David CARLIER
ext/sockets
: socket_get_option/socket_set_option SO_LINGER_SEC. in GH-14858- tsrm_realpath_r for win32 mountpoints copy little optimisations. in GH-14852
ext/gd
minor corrections concerning image format id for errors. in GH-14887- sapi/apache2handler: function using char to const char . in GH-14925
- sapi/apache: AP_MPMQ_MAX_THREADS is always available. in GH-14934
Denis Ryabov
- Restore Warning instead of Fatal Error in
gd_webp.c
in b456ae8d34
Ilija Tovilo
- Fix syntax error in SWITCH VM in bc32a6bd4e
- [RFC] Property hooks in GH-13455
- Add cachegrind support for php-cgi warmups in GH-14952
- Extract obtaining of fake scope into function in GH-14960
- Avoid duplicate code in
zend_std_write_property()
in GH-14966 - Fix use-after-free in property coercion with __toString() in 8c312ba74b
Joe Cai
- Fix GH-14930: Custom stream wrapper dir_readdir output truncated to 255 characters in PHP 8.3 in 38501ed48a
Jorg Adam Sowa
- Check
session_create_id()
input for null byte in GH-14728 - Added property hooks words in fuzzer parser dict in GH-14958
Julien Voisin
zend_alloc
: remove duplicatezend_mm_alloc_large
definition in GH-14880
Michael Orlitzky
- ext/standard/tests: use %d instead of bytes in an overflow message in a8d1955348
- ext/standard/tests: 32bit wordwrap tests aren't just for Windows in 68a0efedeb
- ext/standard/tests: strings/wordwrap_memory_limit_32bit.phpt has two outputs in 27dd393be9
ext/gd/tests/gh10614.phpt
: skip if no PNG support in 09957ab9a8
Niels Dossche
- Add
zend_hash_get_current_pos_ex()
in GH-14770 - Update Lexbor in 162e71e165
- Implement Dom $innerHTML property in 768900b180
- Implement Dom\TokenList in GH-13664
- Fix compilation on libxml2 2.13 in 85705eda71
- Fix tests for libxml2 2.13.2 in 173a4033a1
- Fix double entity encoding in soap in ef80266d99
- Stop relying on the deprecated xmlLastError global in d80be78efd
- Remove unused code from xml/compat.c in 81cdb8caf2
- Avoid pointless duplication in _end_element_handler in 87599717c9
- Fix uninitialized (dummy) memory in
php_strtr_array()
in GH-14812 - Implement PHP-specific extensions to Dom in GH-14754
- Backport libxml2 2.13.2 fixes in GH-14816
- Fix GH-14808: Unexpected null pointer in Zend/zend_string.h with empty output buffer in 89c3e0346a
- NEWS for GH-14814 in 1006e1021e
- Fix GH-13688: Test curl_basic_008 can fail in GH-13693
- Fix GH-14553: Bug in phpdbg8.3 (also 8.1 and 8.2) echo output - trimmed at NULL byte (?) in 95889979f2
- Fix test conflict between
gzfile_basic.phpt
andgzfile_basic2.phpt
in 1e5f46fb20 ext/xml
: Usezend_hash_find_ptr_lc()
to avoid allocation in some cases in GH-14840- Port XML_GetCurrentByteIndex to public APIs in 8dc799aac7
- Stop relying on the sax2 flag directly in 6490a18271
- Stop relying on lastError directly in 823d0588f7
- Stop setting parse options directly in e5e15fd229
- NEWS for compatibility in XML in a66afbbe09
- Fix GH-14834: Error installing PHP when
--with-pear
is used in 67259e451d - Add LIBXML_NO_XXE constant in GH-14844
- Fix bug #81481 (
xml_get_current_byte_index
limited to 32-bit numbers on 64-bit builds) (#14845) in b41e90c6f9 - Remove unused arguments from
_external_entity_ref_handler()
in 2ab24b0a94 - Remove pointless const specifier on scalar argument in ec1998987b
- Remove unused include from
xml.c
in be2d9fd80e - Fix grammar mistake in comment in
xml.c
in 335d6f023f - Stop using reserved names in 19358d638b
- Handle invalid values better in
PHP_XML_OPTION_SKIP_TAGSTART
in 292e936ca8 - Avoid pointless cast to prevent implementation-defined conversion warning in ff3e7679b1
- Avoid function pointer cast to preserve ability to do CFI in 776939c3db
- Fix GH-14639: Member access within null pointer in ext/spl/spl_observer.c in 0d4e0c013e
- Place macro argument in parentheses in 0a1f1dd191
- Remove unused argument in ac4ed1cca6
- Stop using reserved name in
php_xsl.h
in f16590637c - Fix narrowing warning in c6d0181c75
- Stop using reserved names in simplexml in acda7ed5c3
- Fix typo in
simplexml.c
in 477c2afb48 - Fix libxml test compatibility in xsl in f4af8f3837
- Fix GH-14550: No warning message when Zend DTrace is enabled that opcache.jit is implictly disabled in b44ad27a78
- Fix memory leak in
tidy_repair_file()
in c34def581a - Improve error message for too long file in
ext/tidy
in GH-14870 - Remove unnecessary include statements from dom in dd795022fa
- Make some pointers const in
php_dom.h
in 3303c15754 - Add parenthesis to macro arguments in
internal_helpers.h
in ae0ba1a5c6 - Add parenthesis to macro arguments in
dom_properties.h
in c98a7c1195 - Stop using reserved names in dom in 013bc53f0c
- Throw an exception when using the namespace axis in XPath in modern DOM in GH-14871
- Revert "Stop using reserved names in dom" in dda96768ec
- Revert "Remove unnecessary include statements from dom" in 33289dfa5c
- Reapply "Stop using reserved names in dom" in 8825235348
- Fix GH-14741: Segmentation fault in Zend/zend_types.h in eb8c3cb79a
- Avoid reconciling when cloning into the same document in GH-14921
- Fix GH-14873: PHP 8.4 min function fails on typed integer in 1a07bb9252
- Split off private data from the ns mapper in 4ef7539144
- Refactor XML serializer such that passing context is easier in 8ad5c64393
- Support templated content in 6980eba863
Peter Kokot
- Autotools: Sync
PHP_ADD_MAKEFILE_FRAGMENT
in GH-14766 - Autotools: Refactor PCRE JIT checks in GH-14781
- Autotools: Refactor IPv6 check in GH-14782
- Refactor HAVE_GETIFADDRS checks in GH-14787
- Autotools: Refactor getaddrinfo check in GH-14783
- Autotools: Refactor cache variables in configure.ac and
ext/ldap
in GH-14784 - Autotools: Refactor
ext/standard
cache variables in GH-14799 - Autotools: Refactor
ext/standard
strptime check in GH-14800 - Fix GH-14792: Compilation failure on pdo_* extensions in GH-14797
- Autotools: Refactor
PHP_TEST_WRITE_STDOUT
check in GH-14819 - Autotools: Refactor crypt_r style check in GH-14820
- Remove HAVE_STRPTIME_DECL_FAILS in GH-14821
- Autotools: Refactor
PHP_FPM_LQ
checks in GH-14828 - Autotools: Refactor
PHP_FPM_BUILTIN_ATOMIC
in GH-14825 - Autotools: Refactor
PHP_TIME_R_TYPE
check in GH-14823 - Autotools: Refactor
PHP_BROKEN_GCC_STRLEN_OPT
in GH-14824 - Fix GH-14798: Valgrind and address sanitizer are not compatible in GH-14826
- Autotools: Add
ZEND_ENABLE_STATIC_TSRMLS_CACHE
to skeleton in GH-14827 - Autotools: Move crypt_r check in GH-14832
- Autotools: Refactor AVX-512 checks in GH-14831
- Autotools: Refactor mach_vm_read check in FPM in GH-14830
- Autotools: Sync CS in phpize and configure.ac in GH-14838
- Remove unused SMART_STR_PREALLOC in GH-14848
- Update http links to https and sync www.php.net URLs in GH-14854
- Enable erase_empty_line in
ext/readline
in GH-14526 - Autotools: Sync HAVE_ERASE_EMPTY_LINE help text in GH-14857
- Autotools: Refactor crypt check in
ext/standard
in GH-14856 - Autotools: Simplify POSIX Threads check in GH-14855
- Autotools: Refactor dmalloc check in GH-14726
- Remove support for EOL Apache 2.0 and 2.2 in favor of 2.4+ in GH-14664
- Remove unused HAVE_PHPDBG in GH-14864
- Autotools: Refactor phpdbg POSIX Threads checks in GH-14865
- Fix ASVAR* checks in GH-14868
- Autotools: Remove unused DEBUG_CFLAGS variable in GH-12659
- Check Apache HTTP Server command-line utility in GH-14173
- Autotools: Move Apache warning to SAPI's config.m4 in GH-14872
- Autotools: Remove obsolete crypt link override due to OpenSSL in GH-14863
- Autotools: Refactor builtin checks in GH-14835
- Autotools: Use FPM_EXTRA_LIBS for ACL library in GH-14881
- Autotools: Move
php_shtool
variable initialization toPHP_INIT_BUILD_SYSTEM
in GH-14904 - Autotools: Refactor ptrace check for PHP-FPM in GH-14907
- Update config.guess to 2024-01-01 and config.sub to 2024-01-01 in GH-14898
- Autotools: Fix config.status script syntax in GH-14929
- Autotools: Sync CS for
PHP_EBCDIC
andPHP_C_BIGENDIAN
in GH-14923 - Autotools: Simplify the iconv not found error in GH-14931
- Autotools: Refactor oniguruma invalid KOI8 check in GH-14928
- Autotools: Enhance
PHP_EVAL_LIBLINE
M4 macro in GH-14924 - Autotools: Use FPM_EXTRA_LIBS for systemd library in GH-14883
- Autotools: Use FPM_EXTRA_LIBS for apparmor library in GH-14884
- Autotools: Use FPM_EXTRA_LIBS for SELinux library in GH-14885
- Autotools: Use LIBS for appending -lonig in GH-14936
- Autotools: Refactor PDO_ODBC_CHECK_HEADER in GH-14935
- Make ext/fileinfo/generate_patch.sh simpler to use in GH-14941
- Autotools: Trim redundant newlines in
PHP_ADD_BUILD_DIR
in GH-14946 - Autotools: Refactor curl config.m4 in GH-14948
- Autotools: Quote all
PHP_ADD_BUILD_DIR
arguments in GH-14947 - Autotools: Refactor PHP-FPM /proc/pid filename check in GH-14949
- Autotools: Quote RE2C_FLAGS argument in GH-14950
- Fix #78757: Enhance sendmail log notice (#14955) in 8e8dc40765
- Autotools: Sync quotes in
PHP_INSTALL_HEADERS
in 1fe854ebfa - Autotools: Sync LIBS and LDFLAGS handling in GH-14956
- Autotools: Add missing sigil in AC_CASE and fix Autoconf syntax in GH-14967
Saki Takamachi
- Added scale to bc_compare argument in GH-14802
Tim Düsterhus
- Replace
@deprecated
by#[\Deprecated]
for internal functions / class constants in GH-14750
Vladimir Vrzić
ext/pcntl
: Added new function pcntl_waitid in c2fd071db7