PHP 8.4.0beta5: Downloads, Changelog, News

Release Information

Release
8.4.0beta5
PHP Version
PHP 8.4
Release Date
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
Use Git to clone the 8.4.0beta5 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0beta5
How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (./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.
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.

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.0beta5-cli-alpine

Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.4.0beta5-cli
PHP 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.0beta5-fpm-alpine

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.0beta5-apache

Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
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

Ayesh Karunaratne

  • ext/curl: libcurl CURLOPT_{FTP_RESPONSE_TIMEOUT,ENCODING} replacements in GH-15126
  • ext/curl: Update UPGRADING and NEWS for GH-13255 in GH-15668
  • ext/curl: No-op CURLOPT_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

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

Daniel Scherzer

David Carlier

Derick Rethans

Dmitry Stogov

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

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 and PHP_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, and PHP_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: Fixed bcdiv() div by one in GH-15629
  • Fixed LONG_MAX in BCMath ext in GH-15663
  • NEWS for ext/bcmath: Fixed bcdiv() div by one in GH-15629
  • [RFC] Support object types in BCMath in GH-13741

Simonov Denis

  • ext/pdo_firebird: Fixed GH-15604 Always make input parameters nullable in GH-15605
Subscribe to PHP.Watch newsletter for monthly updates

You will receive an email on last Wednesday of every month and on major PHP releases with new articles related to PHP, upcoming changes, new features and what's changing in the language. No marketing emails, no selling of your contacts, no click-tracking, and one-click instant unsubscribe from any email you receive.

Support PHP.Watch — If you find the articles, version information, Codex, and other PHP.Watch contributions useful, consider supporting through GitHub Sponsors. Your sponsorship helps dedicate more time to creating valuable content and improving the PHP community. Together, we can keep the momentum going — thank you for your support!

Thanks to the highest tier sponsor: @TomasVotruba for your generous support to keep PHP.Watch moving 💜