PHP 8.5.0alpha2: Downloads, Changelog, News

Release Information

Release
8.5.0alpha2
PHP Version
PHP 8.5
Release Date
Release Type
Bug Fix Release
Release Status
QA Release Latest
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. This is the latest QA release in the series.

Downloads

Source Code

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

ChangeLog

Core

  • Fix OSS-Fuzz #427814452 (pipe compilation fails with assert).

DOM

  • Make cloning DOM node lists, maps, and collections fail.
  • Added Dom`Element::getElementsByClassName()`.

PDO_ODBC

  • Fetch larger block sizes and better handle SQL_NO_TOTAL when calling SQLGetData.

Standard

  • Optimized pack().
  • Fixed bug GH-19070 (setlocale($type, NULL) should not be deprecated).

URI

  • Return the singleton UrlValidationErrorType instances from Uri\WhatWg\Url instead of creating new objects that are different from the singleton.

Commit List

Calvin Buckley

  • Use C23 unreachable() when possible in GH-19077
  • pdo_odbc: Don't fetch 256 byte blocks for long columns in GH-10809

DanielEScherzer

  • release-process: update based on 8.5.0alpha1 in GH-19004
  • release-process: update based on 8.5.0alpha1 announcement in GH-19028
  • Remove broken zend_get_zendleng() declaration in GH-19032
  • ext/standard/string.c: don't use STR_EMPTY_ALLOC() in GH-19033
  • Remove old exception class getters in GH-19043
  • Make zend_register_*_constant() functions return pointers, use them in GH-19029
  • Deprecate returning non-string values from a user output handler in GH-18932
  • Remove old zend_string compatibility aliases in GH-19034
  • Deprecate producing output in a user output handler in GH-19067

Daniel Scherzer

  • gen_stub: add StringBuilder class for managing known strings in ecdff3b563
  • gen_stub: use StringBuilder for attribute strings in 0c920ecb07
  • Arginfo: add and use known strings for attribute values in 142e378618

David CARLIER

  • ext/sockets: socket_addrinfo_lookup narrowing down socket family check to AF_INET/AF_INET6 only. in GH-19040

Demon

  • Zend: fix undefined symbol 'execute_ex' on Windows ARM64 GH-19064; ext/gd: fix emmintrin.h not found on Windows ARM64 in 2be3aa86f0
  • ext/gd: Drop useless and doubtful MSVC specific code (libgd/libgd@f1480ab) in 12fa8c637f
  • ext/gd: Drop useless and doubtful MSVC specific code (libgd/libgd@f1480ab) in 974526b244

Dmitry Stogov

Gina Peter Banyard

  • Zend: Return anonymous closure names in zend_get_callable_name_ex() in GH-19011
  • ext/spl: Add tests for disabled sort functions in faef004250
  • ext/spl: Refactor ArrayObject sort methods in 50ddf6a68f
  • sapi/fuzzer: Fetch function and call it directly instead of using a zval to hold the name in GH-19030
  • ext/standard/stream: Use FCC instead of zval for notification callback in GH-19024
  • ext/session: convert some globals to zend_string in 43fe9fd171
  • ext/session: copy zstr instead of initializing a new one in 9c68853023
  • ext/session: Concert save_path to zstr in eaee504c4d
  • ext/session: Use smart_str_append when possible in c529e2f85b
  • ext/session: Use ZEND_STRL() in ac3807ee8d
  • ext/session: Use is_numeric_str helper in b83484df97
  • ext/session: convert global session_name to zstr in f5166b3bb6
  • ext/session: Use zend_string for some session globals in 766ccc2210
  • ext/session: Initialize variable with default value in db01dbc4ee
  • ext/session: Minor code cleanups in c3dac0f8b6
  • ext/session: get rid of sname_len field in 36358bad84
  • ext/pcntl: Use bool type for some module globals in 89e4de8d7b
  • ext/pcntl: Use uint8_t type for num_signals module global in 3de6695ae8
  • ext/pcntl: Pack module globals struct in 22f2a1d47b
  • ext/soap/php_http.c: Fix memory leak of header value in 85a49d4198

Ilija Tovilo

  • Disable JIT on Apple Silicon + ZTS in b6660634b4
  • Fix lineno for constructor property promotion errors in 9460dbe906

Jakub Zelenka

  • Introduce OpenSSL INI for selecting libctx in GH-18768
  • Use custom OpenSSL libctx for NCONF in GH-19130
  • Fix bug #80770: openssl cafile not used in SNI SSL_CTX in 6b2b60f683

Kasey Jenkins

Máté Kocsis

  • Update uriparser to commit 8c06d in 8bb6b81c60
  • Add the Uri\Rfc3986\Uri class to ext/uri without wither support in GH-18836

Niels Dossche

  • curl: Remove incorrect string release on error in 11ea995ff3
  • Fix leak when path is too long in ZipArchive::extractTo() in 09c223de00
  • Fix GH-18990, bug #81029, bug #47314: SOAP HTTP socket not closing on object destruction in 69328ba304
  • soap: Get decompression function directly from function table and call it in 32f0d24e1f
  • soap: Avoid redundant copying of http body string in e6e0887005
  • Don't deref soap private properties in 8fdd434bb5
  • Use ZVAL_NULL() directly for Z_CLIENT_USE_PROXY_P() in aa0e8bf568
  • Fix OSS-Fuzz #428983568 and #428760800 in 4aac98f145
  • Fix stream double free in phar in 32344c4dc4
  • Fix phar crash and file corruption with SplFileObject in 405be1c940
  • Optimize pack() in 6cc21c4ee6
  • Fix GH-19070: setlocale($type, NULL) should not be deprecated in c4183fba00
  • Make cloning DOM node lists, maps, and collections fail in e013b4a91e
  • dom: Remove unnecessary objmap ptr null checks in GH-19092
  • Fix GH-19094: Attaching class with no Iterator implementation to MultipleIterator causes crash in 71472268c0
  • dom: Rename get_named_item -> get_ns_named_item, and has_named_item -> has_ns_named_item in a2d65354a0
  • Refactor dom_html_collection_named_item() in f11ea2ae13
  • Fix OSS-Fuzz #427814452 in 8712f4bf19
  • Implement GH-18550: Implement getElementsByClassName() in GH-19108

Peter Kokot

  • Remove conditional checks for ssize_t type in GH-18996
  • Update re2c minimum versions in Windows checks and docs in GH-19039
  • Use <winsock2.h> instead of legacy <winsock.h> in GH-19037
  • Fix -Wuseless-escape warnings emitted by re2c in GH-19050
  • Autoconf: Move getlogin check for HAVE_GETLOGIN to ext/posix in GH-19058
  • ext/gd: Make TGA always available in GH-19105
  • ext/gd: Make BMP always available in GH-19115
  • Autotools, ext/gd: Ensure test program compiles without warnings in GH-19116
  • GitHub: Remove ext/phar/php_phar.h in GH-19124
  • Fix missing strnlen symbol on Solaris 10 in GH-19109

Remi Collet

  • fix ldap.h detection without pkgconfig in GH-19005
  • avoid false failure for long path in GH-18992

SakiTakamachi

Tim Düsterhus

  • uri: Do not create new UrlValidationErrorType objects in GH-19009
  • random: Fix error message formatting for Randomizer::getFloat() in GH-19008
  • random: Remove useless zend_string allocation in randomizer_common_init() in GH-19007
  • Zend: constify various parameters in zend_object_handlers and zend_lazy_objects in GH-19019
  • uri: Do not overwrite defaultMemoryManager in GH-19042
  • Zend: Add zend_check_method_accessible() to DRY method visibility checks in GH-18995
  • Zend: Make EG(fake_scope) a constzend_class_entry*`` in GH-19060
  • ext/xml: Suppress libxml deprecation for _xmlParserCtxt.inState in GH-19131

Volker Dusch

Yudai Takada

  • Fix typo in SAPI and ADD_SOURCES description in upgrade notes in GH-19095
  • Remove unnecessary semicolon in match rule in GH-19096
  • Refactor newline handling in zend_scan_escape_string to use HANDLE_NEWLINE macro in GH-19112

Zheng Yu

  • Fix unreachable code in URL output handler in GH-19056
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.