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.1 is the latest QA release in PHP 8.4.
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