Release Information
- 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 (
Detailed articles on how to compile PHP are available for Ubuntu/Debian based systems and Fedora/RHEL based systems.
./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.
php-8.5.0alpha2-x64NTS.zip (32.33 MiB)
php-8.5.0alpha2-x86NTS.zip (29.01 MiB)
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.
php-8.5.0alpha2-x64TS.zip (32.46 MiB)
php-8.5.0alpha2-x86TS.zip (29.02 MiB)
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 useSTR_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
: fixemmintrin.h
not found on Windows ARM64 in 2be3aa86f0 ext/gd
: Drop useless and doubtful MSVC specific code (libgd/libgd@f1480ab) in 12fa8c637fext/gd
: Drop useless and doubtful MSVC specific code (libgd/libgd@f1480ab) in 974526b244
Dmitry Stogov
- Update IR in e8ae27bf8a
- Revert "Update IR" in 9abb0fb0c4
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 faef004250ext/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 tozend_string
in 43fe9fd171ext/session
: copy zstr instead of initializing a new one in 9c68853023ext/session
: Concert save_path to zstr in eaee504c4dext/session
: Use smart_str_append when possible in c529e2f85bext/session
: UseZEND_STRL()
in ac3807ee8dext/session
: Use is_numeric_str helper in b83484df97ext/session
: convert global session_name to zstr in f5166b3bb6ext/session
: Usezend_string
for some session globals in 766ccc2210ext/session
: Initialize variable with default value in db01dbc4eeext/session
: Minor code cleanups in c3dac0f8b6ext/session
: get rid of sname_len field in 36358bad84ext/pcntl
: Use bool type for some module globals in 89e4de8d7bext/pcntl
: Use uint8_t type for num_signals module global in 3de6695ae8ext/pcntl
: Pack module globals struct in 22f2a1d47bext/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
- Fix empty_fcall_info C++ missing-field-initializers warning (GH-19084) in cea0918352
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-19105ext/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
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 inrandomizer_common_init()
in GH-19007 - Zend:
const
ify various parameters inzend_object_handlers
andzend_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)
aconst
zend_class_entry*`` in GH-19060 ext/xml
: Suppress libxml deprecation for_xmlParserCtxt.inState
in GH-19131
Volker Dusch
- Update Version to 8.5.0alpha2 in 24b32f6a89
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