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.0RC1 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.0beta5
./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.0beta5-cli-alpine
docker pull php:8.4.0beta5-cli
docker pull php:8.4.0beta5-fpm-alpine
docker pull php:8.4.0beta5-apache
docker pull php:8.4.0beta5-fpm
ChangeLog
BCMath
- Fixed LONG_MAX in BCMath ext.
- Fixed
bcdiv()
div by one. - [RFC] Support object types in BCMath.
Core
- Fixed bug GH-15330 (Do not scan generator frames more than once).
- Fixed bug GH-15644 (Asymmetric visibility doesn't work with hooks).
- Implemented lazy objects RFC.
- Fixed bug GH-15686 (Building shared iconv with external iconv library).
- Fixed missing error when adding asymmetric visibility to unilateral virtual property.
- Fixed bug GH-15693 (Unnecessary include in
main.c
bloats binary). - Fixed bug GH-15731 (AllowDynamicProperties validation should error on enums).
- Fixed uninitialized lineno in constant AST of internal enums.
Curl
- The CURLOPT_DNS_USE_GLOBAL_CACHE option is now silently ignored.
DOM
- Fixed bug GH-13988 (Storing DOMElement consume 4 times more memory in PHP 8.1 than in PHP 8.0).
- Fixed bug GH-15654 (Signed integer overflow in ext/dom/nodelist.c).
GD
- Added gdImageClone to bundled libgd.
Hash
- Fixed bug GH-15742 (
php_hash_sha.h
incompatible with C++).
OpenSSL
- Implement GH-13514 PASSWORD_ARGON2 from OpenSSL 3.2.
PDO
- The internal header
php_pdo_int.h
is no longer installed; it is not supposed to be used by PDO drivers.
PDO_Firebird
- Fixed GH-15604 (Always make input parameters nullable).
Reflection
- Fixed bug GH-15718 (Segfault on
ReflectionProperty::get
{Hook,Hooks}() on dynamic properties). - Fixed bug GH-15694 (
ReflectionProperty::isInitialized()
is incorrect for hooked properties).
SOAP
- Fixed bug #61525 (SOAP functions require at least one space after HTTP header colon).
- Implement request #47317 (SoapServer::__getLastResponse()).
Standard
- Fixed bug GH-15552 (Signed integer overflow in ext/standard/scanf.c).
- Implemented GH-15685 (improve
proc_open
error reporting on Windows).
Streams
- Fixed bug GH-15628 (
php_stream_memory_get_buffer()
not zero-terminated).
Commit List
Arnaud Le Blanc
- Alpine/Musl nightly job in GH-13925
- Do not scan generator frames more than once in GH-15330
- Lazy objects in 58aa6fc830
Ayesh Karunaratne
ext/curl
: libcurlCURLOPT_{FTP_RESPONSE_TIMEOUT,ENCODING}
replacements in GH-15126ext/curl
: UpdateUPGRADING
andNEWS
for GH-13255 in GH-15668ext/curl
: No-opCURLOPT_DNS_USE_GLOBAL_CACHE
constant (GH-15127) in 24d4ae9d2f
Bob Weinand
- Make internal run_time_cache a persistent allocation in GH-15040
Calvin Buckley
- Update versions for PHP 8.4.0beta5 in 7fcb0a3d3d
Christoph M. Becker
- Drop support for building with MSC_VER < 1920 in b3d6414b87
- ICU 75.1 requires C++17 (GH-15678) in 0f8259e896
- Don't export
php_pdo_int.h
in a57ce052cd - Fix GH-15628:
php_stream_memory_get_buffer()
not zero-terminated in 93021c635d - Mark
gd14930.phpt
as dynamicxfail
in ac4039df20 - Skip tests calling wmic if it is not available in 0b1e401f2c
- Fix GH-15552: Signed integer overflow in ext/standard/scanf.c in 08841bf79c
- Fix
run-tests.php
to propagate status code on Windows in 71b908748a - Dynamically
xfail
test cases which fail on CI (GH-15710) in 6d5962074f - Close-GH 15685: improve
proc_open
error reporting on Windows in 3892529fed - Fix dba tests wrt resource to object conversion (GH-15716) in 8a2015451a
- Use
php_error_docref()
instead ofzend_error()
insession.c
(GH-15505) in 217ea732fc - Fix GH-15742:
php_hash_sha.h
incompatible with C++ in 5d1181fb3f - Support SHA256_Transform_shani() with MSVC, too in 1d36927127
- Support
--openssl-legacy-providers
on Windows, too (GH-15747) in 6732b8892d - Add comments about internal headers (GH-15689) in 50b3a0d011
gai_strerror()
is not thread-safe on Windows (GH-15568) in edcd6cc564
DanielEScherzer
- Generated arginfo header files: remove empty
zend_function_entry
arrays in GH-15705 - Generated arginfo header files: combine preprocessor conditional blocks in GH-15736
zend_get_constant_ex()
- remove commented out handling of class constants in GH-15728#[AllowDynamicProperties]
validation: improve error messages in GH-15734- Fix GH-15731: Prevent
#[AllowDynamicProperties]
on enums in GH-15733 userland_declaration_error_class_const.phpt
: fix test name in GH-15784
Daniel Ruf
- Fix typo in GH-15780
Daniel Scherzer
ReflectionProperty::get
{Hook,Hooks}(): handle dynamic properties in 18df69ee34- Fix GH-15752:
finfo_file()
- parameter validation error messages in c5e0a6aaab - backporting GH-15755 fix in 29f9f903b1
David Carlier
- Follow-up on GH-15548: curl_multi_select in c4ae645849
ext/gd
: porting gdImageClone to the bundled libgd version in 307565d577- Fix GH-15653: fgetcsv overflow on length parameter in 7db1a5843f
Derick Rethans
- Updated to version 2024.2 (2024b) in 5fc37b1ec6
- Empty merge in d31a9474b0
- Updated to version 2024.2 (2024b) in 7023fb9d93
- Empty merge in 8fcd0ccecf
- Updated to version 2024.2 (2024b) in 2f3224ea41
Dmitry Stogov
- Remove unintended
ZEND_EXT_API
usage in GH-15602 - Fix GH-15502: Crash with JIT and Excimer in GH-15601
- Fix GH-15497: Opcache with file_cache and JIT enabled crashes in GH-15635
- Fix GH-15497: Opcache with file_cache and JIT enabled crashes in GH-15635
- Prevent JIT of propery hooks in case of file caching (related to GH-15497) in 45dac39c71
- Restore error message incorrectly removed by commit 10d43c4 (related to GH-15497) in c15bb9afe2
- Prevent possible incorrect optimization caused by
ZEND_ASSUME()
in bf98023f1a - Don't set IS_STR_PERMANENT flag for strings stored in the file cache in GH-15643
- Fix GH-15652: Segmentation fault in the Zend engine when JIT enabled in GH-15717
- Update IR in a7f789ec56
- Fix GH-15656: php8.4beta4 JIT erronous results in GH-15732
- Fix GH-15820: Core dumped with jit.opcache=1245 in 5cf045d357
- Fix GH-15821: Core dumped in Zend/Optimizer/zend_inference.c:4062 in 7c8b3b2c96
Go Kudo
- standard: supress msan in GH-15665
- Fix OPcache tests under specific conditions in bca5f6e74f
- Fix OPcache tests under specific conditions in d966c296d0
Ilija Tovilo
- Improve readonly avis error (GH-15618) in daeb3295b2
- Fix asymmetric visibility with set hook in e12188fe89
- Forbid a-vis on unilateral virtual prop in 2b8a1b4258
- Simplify a-vis error message in 7f0d2574f0
- Fix uninitialized lineno in constant AST of internal enums in 08e0729c57
- Intercept strlcpy and strlcat for msan on Clang 17 in GH-12674
- Fix uouv in
array_column
in 24a294922b - Fix uninitialized EG(user_error_handler_error_reporting) in b9fdc0bdcd
- Fix uninitialized CG(
zend_lineno
) in 1f35e2a999 - Fix MSAN
getservbyport()
false positive in 0faa1d2017 - Fix
ReflectionProperty::isInitialized()
for hooked props in 025ed70ce3
Jorg Adam Sowa
- Add type indicator to array/arg unpack error messages (GH-15448) in 2a30f2ffc4
Levi Morrison
- Interrupt while internal frame is on the stack in GH-14627
Máté Kocsis
- Use
ZEND_UNCOMPARABLE
for consistency in 09c498233e - Add missing return for DatePeriod::__unserialize in 6cab76986d
Niels Dossche
- Fix GH-13988: Storing DOMElement consume 4 times more memory in PHP 8.1 than in PHP 8.0 in 88393cfaf7
- Avoid string duplication if possible in
SimpleXMLElement::addAttribute()
in GH-15606 - Cleanup
php_sxe_count_elements_helper()
in 7f37c22d22 - Remove unused parameter of
php_sxe_reset_iterator()
in 2fe8dd1054 - Remove unused parameter from
match_ns()
in 9979f4748c - Remove failure paths for infallible code in simplexml in 51d93c1947
- Optimize DOM property access in GH-15626
- Fix GH-15654: Signed integer overflow in ext/dom/nodelist.c in 9cb23a3dec
- Fix GH-15670: Polymorphic cache slot issue in DOM in GH-15676
- Remove redundant 'zobj->ce->__isset' check in GH-15699
- Fix GH-15690: ext-dba failures on 32-bit in GH-15691
- Fix GH-15693: Unnecessary include in
main.c
bloats binary in 0d616d1b82 - Simplify
bcmath_check_scale()
in f1b4e1276c - Move
bcmath_check_scale()
in 2e88916b58 - Reuse
bcmath_check_scale()
in ac0931d37a - Fix bug #61525: SOAP functions require at least one space after HTTP header colon in 7771ec07e5
- Deduplicate URI building code in soap schema code in GH-15799
- Fix SOAP test failure on libxml2 2.13 in 979e68a2ec
- Implement request #47317: SoapServer::__getLastResponse() in 8bcfc8cc13
- Fix GH-15661: Access null pointer in Zend/Optimizer/zend_inference.c in 86ef8d5466
- Fix GH-15658: Segmentation fault in Zend/zend_vm_execute.h in c1ffd4b484
- Fix merge into master in 23db89538b
- Fix buffer size configuration for AArch64 in bcd1f23b30
Peter Kokot
- Fix iconv_open basic test in GH-15611
- Autotools: Sync CS in
ext/dba
in GH-15608 - Autotools: Normalize
PHP_INSTALL_HEADERS
arguments in GH-15620 - Autotools: Normalize
PHP_ADD_BUILD_DIR
1st argument in GH-15612 - Autotools: Sync CS in
ext/odbc
in GH-15625 - Autotools: Normalize 2nd arg in
PHP_ADD_SOURCES_X
in GH-15088 - Remove redundant HAVE_LIBREADLINE check in GH-15623
- Autotools: Remove redundant double quotes in GH-15634
- Autotools: Use SED variable for sed command in GH-15641
- Autotools: Replace backticks command substitutions with $(...) in GH-15639
- Autotools: Sync CS in
ext/dba
(part 2) in GH-15621 - Trim trailing whitespace in GH-15649
- Fix -Wunused-function warning in
ext/pdo_firebird
in GH-15646 - Autotools: Replace backticks with $(...) in php.m4 in GH-15642
- Autotools: Refactor ODBC type checks in GH-15651
- Autotools: Add 3rd argument to dba
PHP_TEMP_LDFLAGS
in 558ccf7362 - Autotools: Fix pdo_mysql build with mysql client library in GH-15450
- Autotools: Normalize flags arguments in GH-15671
- Autotools: Fix iconv shared build with external library in GH-15686
- Autotools: Document PHP environment build configuration vars in GH-15684
- Autotools: Sync CS in
ext/openssl
in 45ebe47569 - Autotools: Sync CS in configure.ac in GH-15706
- Autotools: Enhance appending -lrt in GH-15719
- Remove Travis artefacts in GH-15714
- Autotools: Document the EXTENSION_DIR environment variable in GH-15743
- Autotools: Sync CS in
PHP_EVAL_LIBLINE
in GH-15737 - Autotools: Mark always-shared extensions with ext_shared variable in GH-15739
- Update skeleton extension .gitignore in GH-15738
- Autotools: Sync CS for
PHP_RUNPATH_SWITCH
in GH-15768 - Sync Zend/asm/make_ppc64_sysv_macho_gas.S with upstream in GH-15769
- Autotools: Replace uname with host_alias for finding Solaris in GH-15770
- Autotools: Sync CS in php.m4 in GH-15771
- Autotools: Sync CS in
PHP_PROG_AWK
in GH-15772 - Autotools: s/M4 macros/Autoconf macros in GH-15778
- Autotools: Fix gd extension -I flag for bundled libgd in GH-15786
- Convert CRLF line endings to LF in GH-15767
- Autotools: Sync CS for
PHP_PWRITE_TEST
andPHP_PREAD_TEST
in GH-15774 - Sync Zend/*_i386_sysv_elf_gas.S with upstream in GH-15788
- Autotools: Enable adding a list of paths in
PHP_ADD_INCLUDE
in GH-15777 - Autotools: Move extension setup to main check in GH-15797
- Autotools: Check Apache version with apxs and HTTPD_VERSION variable in GH-15476
- Autotools: Refactor
PHP_TEST_BUILD
checks in GH-15798 - Autotools: Obsolete
PHP_TEST_BUILD
,PHP_BUILD_THREAD_SAFE
, andPHP_DEF_HAVE
in GH-15802
Remi Collet
Saki Takamachi
- Fixed the sign to be PLUS if the result is 0 in GH-15599
ext/bcmath
: Fixedbcdiv()
div by one in GH-15629- Fixed LONG_MAX in BCMath ext in GH-15663
- NEWS for
ext/bcmath
: Fixedbcdiv()
div by one in GH-15629 - [RFC] Support object types in BCMath in GH-13741