PHP 8.5.0alpha3: Downloads, Changelog, News

Release Information

Release
8.5.0alpha3
PHP Version
PHP 8.5
Release Date
Release Type
Bug Fix Release
Release Status
QA Release
Branch Status
Upcoming Release

PHP 8.5 is a development version, and is not recommended for production use. PHP 8.5 is scheduled to reach General Availability on 2025-11-20.
PHP 8.5.0alpha4 is the latest QA release in PHP 8.5.

Downloads

Source Code

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

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.5.0alpha3-cli-alpine

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

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

Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.5.0alpha3-fpm

Commit List

Alexandre Daubois

  • Add ReflectionProperty::getMangledName() in GH-18980

Arnaud Le Blanc

  • Introduce zend_vm_opcode_handler_t / zend_vm_opcode_handler_func_t in 7f7b3cdb90
  • Add unique entry point for extra tests in b633720585
  • Fix linker failure when building Opcache statically in 73b1ebfa20
  • Make OPcache non-optional in 7b4c14dc10
  • Fix error handling inconsistency with opcache in 7b3e68ff69
  • Fix out of tree builds in GH-19283
  • Refresh zend_mm shadow key on fork in c561f7da85
  • Call php_child_init() after fork during preloading in GH-19287

Artem Ukrainskiy

  • Refactor traverse_for_entities for unescape_html_entities in e0c3f46496

Ayesh Karunaratne

  • ext/curl: Add CURLOPT_SSL_SIGNATURE_ALGORITHMS option in 6f3bc59950

Benstone Zhang

  • Add support for HEIF/HEIC to getimagesize in dfac2da7fb

Bob Weinand

  • Fix GH-19044: Protected properties are not scoped according to their prototype in GH-19046

Bogdan Ungureanu

  • Intl: IntlListFormatter - update exception message in GH-19282

DanielEScherzer

  • Arginfo: avoid using temporary zvals for initializing attribute values in GH-19141

Daniel Scherzer

  • ext/reflection: voidify format_default_value() in GH-19234
  • gen_stub: add maximum option to generateVersionDependentFlagCode() in 1218e39b07
  • gen_stub: create VersionFlags class in 0d221c5b70
  • gen_stub: move generateClassEntryCode() into FileInfo in 24d94197fd
  • gen_stub: move getFileDocComments() into FileInfo in 30c8480a39
  • gen_stub: simplify generateFunctionEntries() in 15547a2eb1
  • gen_stub: remove unused AbstractConstName::equals() in 8bd8223bad
  • gen_stub: replace AbstractConstName::isClassConst() with instanceof in e5d4d656ab
  • gen_stub: add SimpleType::toTypeInfo() in 9dfee95dae
  • gen_stub: simplify FuncInfo::getFunctionEntry() in 988da4c951
  • gen_stub: simplify FuncInfo::getFramelessDeclaration() in 49f1685cde
  • gen_stub: replace FunctionOrMethodName::isMethod() with instanceof in 0b01640b58
  • gen_stub: make some FuncInfo methods private in 2ed5472f06
  • gen_stub: inline computeStubHash() in ecc403a8fa
  • gen_stub: avoid unneeded regex match in 5ae87ffef4
  • gen_stub: add ConstInfo::getPredefinedConstantElement() in 74f7ecbe04
  • gen_stub: simplify ClassInfo::getRegistration() in 747ecce51f
  • Arginfo: reuse zend_string objects for initializing attribute values in GH-19241
  • gen_stub: Update PHP-Parser to 5.6.0 in GH-19271
  • UPGRADING.INTERNALS: document ZEND_DECLARE_ATTRIBUTED_CONST in GH-19270
  • ext/standard: drop old smart_string headers in GH-19233
  • Update versions for PHP 8.5.0alpha3 in ae73654909

David Carlier

  • ext/sockets: multicast on unsupported socket type error change in 64852b44b5
  • [ci kip] UPDATE NEWS in ff6c1c7a30
  • Fixed GH-19261: msgfmt_parse_message leaks on message format failure in e1c4a0ae51
  • ext/posix: posix_kill() process_id range check in 3b4f2b0798
  • ext/posix: value ranges check for posix_setrlimit and posix_setpgid in f72105be81

David CARLIER

  • ext/intl: using a bit more modern c++ memory management features. in GH-19163
  • ext/intl: reducing raw pointer usage in C++ part, using smart ones instead. in GH-19179
  • zend: ZEND_NONSTRING for clang >= 20 support in GH-19193
  • Fix GH-19197: session build fails on system with memcpy as macro. in GH-19198
  • ext/intl: c++ memory management application to timezone class internals. in GH-19184
  • ext/intl: GregorianCalendar using C++ upcasting operator. in GH-19216
  • ext/sockets: cmsg data array elements using uint32_t type instead. in GH-19254
  • ext/sockets: using accept4 wheneever possible for php_accept_connect helper in GH-19268
  • ext/intl: convert C part to C++ step 1. in GH-19231

dixyes

  • Free opened_path when opened_path_len >= MAXPATHLEN in 5dd965117a
  • ext/pdo_pgsql: Fix _pdo_pgsql_trim_message bad access in e16df981bf

Dmitrii Derepko

  • refactor: Drop unused op_array param from zend_get_brk_cont_target() (GH-19117) in ea9a7b2523
  • ext/standard: handle html entities empty string before processing in GH-19220

Emre Çalışkan

  • Add support for CURLINFO_CONN_ID in curl_getinfo() in GH-18984
  • Add support for CURLINFO_QUEUE_TIME_T in curl_getinfo() in GH-19147

Florian Engelhardt

Gina Peter Banyard

  • ext/intl: Refactor IntlRuleBasedBreakIterator::__construct() in GH-19164
  • ext/tidy: tidyOptGetType returns an enum that is fully checked in 01dbee83e1
  • ext/tidy: refactor php_tidy_set_tidy_opt() in 0a130caf58
  • ext/tidy: Refactor php_tidy_parse_string() in 4433986e40
  • ext/tidy: refactor php_tidy_file_to_mem() in 419f6750c0
  • ext/snmp: no need to use a smart_string for error message in GH-19171
  • ext/intl: Split error tests out and stop relying on ut_common() testing in GH-19266
  • Remove myself from bcmath codeowner in b75c2dcb02
  • ext/gd: Fix comparison with result of php_stream_can_cast() in 83b8d2c290
  • ext/sysvshm: shm_detach() always returns true in e897621be9
  • ext/sysvshm: voidify php_remove_shm_data() in 4844c7a92f
  • ext/sysvshm: refactor php_put_shm_data() in 6154fac64d
  • ext/sysvshm: use size_t and ssize_t instead of zend_long in bac158c80d
  • ext/sysvsem: use bool type instead of int in 87d83d162d
  • ext/sysvmsg: various minor refactorings in f63a35d944
  • ext/intl: Fix return value on failure for resourcebundle count handler in 6b0a80903b

Ilija Tovilo

  • Fix lineno for cpp assignment in 0e80be83b3
  • Fix properties_info_table for abstract properties in c8cc23336d
  • Implement Closure::getCurrent() to retrieve current closure in eb65ec41b7
  • Leak in failed unserialize() with opcache in 5d1636e40b
  • Fix '?' in ReflectionNamedType::getName() from ReflectionProperty::getSettableType() in 5a06842bf8
  • Coerce numeric string keys from iterators when argument unpacking in 23ec35bf4a
  • Fix error recording with file cache only (GH-19278) in 35a4656a59

Jakub Zelenka

  • Remove curl OpenSSL locking for unsupported versions in GH-18784
  • Fix GH-18529: additional inheriting of TLS int options in eade5c17ea
  • Skip LDAP TLS max version test for now in 8516ae86d7
  • Add digest algo param to public encrypt and private decrypt in b1fce8a98c
  • FPM: Implement configurable access log limit in cfb3e98c84
  • Remove unused FPM_LOG_BUFFER in cecf9b02e5
  • Integrate OpenSSL libctx to pwhash in GH-19236

Jorg Adam Sowa

Marc Bennewitz

  • Removed unused var exec_time and fetch time in opcache/zend_accelerator_module.c (GH-19235) in 7c1e461032

Máté Kocsis

  • Cherry pick some recent lexbor changes in 889f38135d
  • Fix parsing URIs with empty hosts in 967377369b
  • Add missing news and upgrading notes for ext/uri in 02b94556cf
  • Update real-time benchmark config after opcache became mandatory in e48099a03c

Niels Dossche

  • Fix GH-18986: OpenSSL backend: incorrect RAND_{load,write}_file() return value check in a8086be81c
  • Fix memleak on failure in collator_get_sort_key() in b495ce0371
  • Fix error return check of EVP_CIPHER_CTX_ctrl() in cd8722304c
  • Fix incorrect OpenSSL merge in 478a520900
  • hash: Use zend_string_efree() where possible in GH-19137
  • Remove redundant operations from zend_llist_clean() in GH-19143
  • ext/standard/password: Use zend_string_efree() where possible in GH-19150
  • Deduplicate error-handling code in finfo_open in GH-19149
  • ext/hash: Remove incorrect zval_ptr_dtor in bdca73cc14
  • ext/socket: Remove incorrect zval_ptr_dtor in d11099ae32
  • NEWS for GH-19162 in 86aaded7e5
  • Disable error handler in fuzzer in GH-19183
  • Migrate from xmlNewNode to xmlNewDocNode in GH-19182
  • Expose gfxinfo as php_gfxinfo in 05bb051243
  • Add API to register custom image handlers in 8db883c540
  • Implement SVG image handler in 0962c325fa
  • UPGRADING, UPGRADING.INTERNALS, and NEWS for SVG and extensible image API in 726516b8c1
  • Fix GH-19098: libxml<2.13 segmentation fault caused by php_libxml_node_free in 312869381a
  • Fix GH-18640: heap-use-after-free ext/soap/php_encoding.c:299:32 in soap_check_zval_ref in 6cc4ae1f1d
  • Make specialization of x64 zend_safe_address() for nmemb==1 in GH-19203
  • Avoid modulo operation in loop in array_chunk in 4762d46427
  • Allocate array eagerly in array_chunk in 1b169bf28e
  • NEWS and UPGRADING for array_chunk in 95f1350ca8
  • Fix test conflict between chmod_variation2 and file_variation5 in 605ee05491
  • Add missing cc clobber in 13c781f04d
  • Run FreebSD CI under 13.5 in be88192594
  • Fix unterminated string GCC warnings in mbstring in GH-19192
  • Fix arginfo/zpp violation if zend_hrtime is not available in ad2143f3b0
  • Handle broken hrtime in ftp in beeeee2978
  • NEWS for hrtime in FTP and standard in f94c11fff8
  • Fix exception handling in shm_put_var() in GH-19279

Peter Kokot

Petr Sumbera

Samuel Melrose

  • Add opcache_is_script_cached_in_file_cache() function in 6f1501a601

Tim Düsterhus

  • ext/xml: Suppress libxml deprecation for _xmlParserCtxt.inState in GH-19131
  • zend_objects: Remove unnecessary refcounting when calling __clone() in GH-19145
  • RFC: Clone with v2 in GH-18747
  • zend_API: Make scope a constzend_class_entry` forzend_updateproperty()` in GH-19156
  • streams: Re-add support for arbitrary metadata for stream notifier functions in GH-19158
  • uri: Improve exceptions for Uri\Rfc3986\Uri in GH-19161
  • bless_tests: Replace the object ID in var_dump() for namespaced classes in GH-19174
  • main: Add PHP_BUILD_PROVIDER userland constant in GH-19157
  • opcache: Disallow changing opcache.memory_consumption when SHM is set up in GH-19146
  • Fix expectations in version string tests in d3ebf97d77

Volker Dusch

  • RM docs: Update social media annoncement process in GH-19159
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.