PHP 8.4.0beta1: Downloads, Changelog, News

Release Information

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

Downloads

Source Code

Git Clone
Use Git to clone the 8.4.0beta1 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0beta1
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.0beta1-cli-alpine

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

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.0beta1-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.0beta1-fpm

Commit List

Arnaud Le Blanc

  • Fix crash during GC of suspended generator delegate in GH-15275
  • Change YIELD/YIELD_FROM to do not increment opline in GH-15328
  • Ensure proper alignment of zend_accel_shared_globals.interned_strings in GH-15359

Ayesh Karunaratne

  • ext/curl: Add HTTP/3 constants in GH-15350

Calvin Buckley

  • Show build provider and unify version information printing in GH-14657
  • Update versions for PHP 8.4.0beta1 in 0156795cbe

Christoph M. Becker

David CARLIER

  • ext/readline: readline_info fix usage when the buffer is not initialised in GH-15139
  • ext/standard: disable one ipv2long test. in GH-15200

David Carlier

  • sapi/phpdbg: windows update exception type falling into segfault in 3c36c7308d
  • CI disable leak sanitizer on two libedit tests temporarily in cad0ce5382
  • Fix GH-15210: phpdbg_print_changed_zvals working on a real copy instead in 9aeb6761b5
  • ext/standard: enabling feature detection auxiliary vector on OpenBSD in d5c7f3b0e6
  • ext/sockets: controlling ephemeral port ranges on *BSD in 1d198c660c
  • ext/sockets: adding SOCK_CLOEXEC/SOCK_NONBLOCK options in d052d612d9

disservin

  • Update ci actions/checkout to v4 in GH-15283

Gina Peter Banyard

  • Zend: Add test disabling assert() function in bc8909aac3
  • ext/dba: Deprecate passing null|false to dba_key_split() in GH-15297
  • ext/spl: Follow-up on GH-9704 in GH-15295
  • ext/xml: Deprecate xml_set_object() and passing non-callable strings as handlers in GH-15293
  • ext/core: Deprecate passing E_USER_ERROR to trigger_error() in GH-15308
  • ext/soap: Deprecate passing an int to SoapServer::addFunction() in GH-15310
  • main/streams: Voidify statbuf_from_array() in GH-15319
  • ext/standard: Minor refactoring to URL scanner code in GH-15321
  • ext/mysqli: Mark function pointer as returning zend_result in GH-15342
  • ext/mysqli: Mark return type as zend_return in GH-15345
  • ext/mysqli: Deprecate passing the parameter to mysqli_store_result() in GH-15311
  • ext/(standard|spl): Deprecate passing a non-empty string as the $enclosure parameter in GH-15362
  • Deprecate using "_" as a class name in GH-15360
  • ext/standard: Throw ValueErrors in str_getcsv() for invalid inputs in GH-15365

Gina Peter Bnayard

  • ext/xml: Add an explicit test case about unsetting a handler with empty string in caae950ff7
  • ext/mysqli: mysqli_report() only ever returns true in efd33f57c7
  • ext/mysqli: Use an assertion for condition that is checked by ZPP in 0c827f6b25
  • ext/mysqli: Remove PHP 6 remnants in c2bdb31b6a
  • ext/mysqli: Improve variable name and type in 5d1db3dd56
  • ext/gmp: Add test about manually (un)serializing in d74b513f68
  • ext/gmp: Use zend_string to GMP object function directly in f8626638c4
  • ext/gmp: Refactor gmp_import_export_validate() in 6114379ad2
  • ext/standard/filters.c: Remove some register keywords in 54cc76fdb4
  • ext/standard/filters.c: Voidify php_conv_base64_decode_ctor() in 2baadf3807
  • ext/standard/filters.c: Use zend_result return type instead of int in 9cfe9e10ba
  • ext/standard/filters.c: Use bool type where possible for persistent field/param in 91aca96a8e
  • ext/standard/head.c: Remove some useless casts in 2297e50772
  • ext/standard/head.c: Change return type of php_header() to bool in 67a15cf457
  • ext/standard/info.c: Removed php_info_html_esc() in 739805d099
  • ext/standard/info.c: Use size_t type where appropriate in 5078eb080e
  • ext/standard/info.c: Make some functions static in e0f6e3de34
  • Add more tests covering deprecation of _ as CE name in 5622def429

Ilija Tovilo

  • Allow optimizer to depend on preloaded symbols in GH-15021
  • Add ReflectionProperty::getSettableType() test for get-only backed property in 85fa983fe6
  • Remove IS_STATIC_VAR_UNINITIALIZED in GH-15227
  • Fix zend_function.prop_info pointer for trait hooks in GH-15245
  • Fix inheritance of hooks onto plain properties in 5d9c155dd3
  • Fix missing variance check for abstract set with asymmetric type in GH-15157
  • [JIT] Avoid generating fast property assign path for readonly properties in GH-15260
  • Disallow indirect modification on readonly properties within __clone() in GH-15012
  • Fix git check in verify generated files (GH-15363) in 9be52dcd62

Jorg Adam Sowa

  • Deprecate date_sunrise and date_sunset constants in GH-12978
  • ValueError on null byte in session_name() in GH-15286
  • ext/session: session.save_handler - add tests fortwo uncovered cases in GH-15337

Kamil Tekiela

  • Deprecate mysqli_refresh in GH-11929
  • Deprecate mysqli_ping in GH-11945
  • Deprecate mysqli_kill in GH-11926
  • Update arginfo for mysqli and spl_fixedarray in GH-15356
  • Deprecate MYSQLIREFRESH* constants in GH-15358

Máté Kocsis

  • Deprecate Soft-deprecated DOMDocument and DOMEntity properties in GH-15369

Niels Dossche

  • Fix UAF when removing doctype and using foreach iteration in b282dd749f
  • Minor cleanup in dom_character_data_append_data in GH-15173
  • Fix GH-15192: Segmentation fault in dom extension (html5_serializer) in 76ad89ccff
  • Add a test for setting the innerHTML on a prefixed XML element in GH-15204
  • Fix GH-15179: Segmentation fault (null pointer dereference) in ext/standard/url_scanner_ex.re in 67ce8759e8
  • Deprecate DOM_PHP_ERR in GH-15234
  • Remove DOMImplementation::getFeature() in GH-15233
  • Fix SoapFault property destruction in 11fbe8801b
  • Use unsigned int instead of int for refcount for libxml objects in GH-15247
  • Fix crash when converting array data for array in shm in xxh3 in ca84662c87
  • Deprecate passing incorrect data types for options to ext/hash functions in GH-15236
  • Revert "Fix bug #69280: SoapClient classmap doesn't support fully qualified class name (#14398)" in 28290655e8
  • Access long value directly for call to count() in simplexml in GH-15278
  • Fix GH-15268: heap buffer overflow in phpdbg (zend_hash_num_elements() Zend/zend_hash.h) in a6c547d1dd
  • Fix GH-15292: Dynamic AVX detection is broken for MSVC in 00001c4a0c
  • Fix uninitialized value watchpoint_hit in 2e26559fcd
  • Add necessary SKIPIFs to new phpdbg tests in 4d71580e00
  • Simplify document standalone setter in GH-15320
  • Fix incorrect type check in removeAttributeNode in db5ea45f0f
  • Fix GH-15331: dom: Element::$substitutedNodeValue test failed in 8d7365b6f0
  • Get rid of le_istream in b7be849fad
  • Get rid of le_dispatch in 3f54be8053
  • Update TODOs in com_dotnet in e1c8329b8c

Peter Kokot

  • Autotools: Normalize PHP_OUTPUT arguments in GH-15177
  • Autotools: Update php.m4 CPP macros help texts in GH-15188
  • Autotools: Fix ffi checks in GH-15197
  • Sync CPP macros in ext/iconv in GH-15191
  • Autotools: Update configure.ac CPP macros help texts in GH-15189
  • Sync HAVE_<extension> help texts in GH-15167
  • Sync file permissions in 48916cec33
  • Fix GH-13199: Redundant prompt in phpdbg with libedit/readline in dc670cb7f6
  • Autotools: Remove obsolete config.status invocations in GH-15185
  • Autotools: Update config.guess to 2024-07-27 and config.sub to 2024-05-27 in GH-15190
  • Sync AC_DEFINE help texts in GH-15207
  • Replace PHP_OUTPUT with AC_CONFIG_FILES in GH-15186
  • Autotools: Improve ftp and mysqlnd SSL configure options in GH-15164
  • Autotools: Replace AC_MSG_ERROR with AC_MSG_FAILURE in GH-15209
  • Refactor HAVE_SQLDATASOURCES check in GH-15222
  • Sync preprocessor macros help texts in GH-15218
  • Autotools: Improve --with-mm configure option check in GH-15212
  • Autotools: Refactor debug checks in GH-15215
  • Add and update ext/dba preprocessor macros help texts in GH-15221
  • Autotools: Check for cross_compiling=yes in GH-15238
  • Fix HAVE_LIBGD usage in GH-15226
  • Add and update ext/odbc preprocessor macros help texts in GH-15223
  • Fix bug #51558: shared readline build fails (#15242) in 0b25e26b4e
  • Autotools: Refactor thread safety checks in GH-15214
  • Autotools: Add ext/readline preprocessor macros help texts in GH-15241
  • Autotools: Add pkg-config for GMP library in GH-15166
  • Autotools: Add phpized configure log and help separators in GH-15251
  • Update preprocessor macros help texts for enchant and snmp extensions in GH-15255
  • Autotools: Quote AC_PATH_PROG arguments in ext/pdo_firebird in a49e0a42a1
  • Update ext/zip preprocessor macros help texts in GH-15271
  • Update ext/sodium preprocessor macro help texts in GH-15270
  • Update ext/tidy preprocessor macros help texts in GH-15269
  • Update pgsql extensions preprocessor macros help texts in GH-15290
  • Update and sync PHP build preprocessor macros help texts in GH-15298
  • Autotools: Remove DEBUG_CFLAGS in GH-15300
  • Autotools: Sync CS in Zend.m4 in GH-15304
  • Autotools: Sync CS in hash extension in GH-15302
  • Autotools: Normalize phpdbg list of source files in GH-15306
  • Autotools: Quote AC_CHECK_PROG* macro arguments in 36f6a20a6b
  • Autotools: Quote PHP_CXX_COMPILE_STDCXX macro arguments in 42c9963133
  • Autotools: Remove too basic optimization flag cleanup in d7a8a04eb9
  • Update sqlite3 and pdo_sqlite preprocessor macros help texts in GH-15291
  • Update gd extension preprocessor macros help texts in GH-15296
  • Update mysql preprocessor macros help texts in GH-15288
  • Autotools: Add pkg-config support for NET-SNMP library in GH-15261
  • Autotools: Fix SNMP checks in GH-15263
  • Autotools: Refactor mysqli extension checks in GH-15323
  • Autotools: Quote PHP_CHECK_SIZEOF macro arguments in 2b30b22d7d
  • Autotools: Refactor pdo_mysql checks in GH-15334
  • Autotools: Sync CS across the configure.ac in GH-15332
  • Autotools: Refactor mysql_config checks in pdo_mysql in GH-15336
  • Autotools: Sync CS in opcache extension in GH-15340
  • Autotools: Sync CS in ext/pcntl in GH-15341
  • Autotools: Remove dependency related errors in GH-15344
  • Autotools: Sync CS in extensions in GH-15343
  • Autotools: Remove PDO dependency related errors in GH-15347
  • Add pcre as a configure step dependency to fileinfo in GH-15349
  • Remove redundant middle newlines in "Autotools" related files in 9fcc1bca8a
  • Autotools: Use AS_CASE in ext/pdo_odbc in GH-15355
  • Autotools: Refactor iconv implementation checks in GH-15357
  • Autotools: Sync CS in gd extension in GH-15364
  • Autotools: Wrap long texts with m4_text_wrap in GH-15368
  • Autotools: Sync CS in ext/pdo_firebird in GH-15372
  • Autotools: Check cli SAPI configure checks conditionally in GH-15370
  • Autotools: Fix phpdbg build in GH-15373
  • Autotools: Fix pdo_firebird shared build in GH-15371

Quentin Dreyer

Remi Collet

  • use libedit instead of readline for CI in 521178709e

Saki Takamachi

  • RFC: Change GMP bool cast behavior in GH-15151

Simonov Denis

  • pdo_firebird: Formatting time zone types in 225034dbbc

Tim Düsterhus

  • Improve link styling in PHPInfo in GH-15077
  • unserialize: Deprecate the 'S' tag in GH-12309
  • random: Deprecate lcg_value() in GH-15211
  • session: Deprecate session.sid_length and session.sid_bits_per_character in GH-15213
  • random: Remove engine_combinedlcg.c in GH-15216
  • standard: Stop using php_combined_lcg() in uniqid() in GH-15217
  • random: Optimize Randomizer::getBytes() in GH-15228
  • hash: Add SHA-NI implementation of SHA-256 in GH-15152

Tyson Andre

  • Deprecate SplFixedArray::__wakeup() in GH-9704
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 💜