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.0RC4 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.5.0RC4How 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.0RC4-x64NTS.zip (32.96 MiB)
php-8.5.0RC4-x86NTS.zip (29.46 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.0RC4-x64TS.zip (33.08 MiB)
php-8.5.0RC4-x86TS.zip (29.51 MiB)
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.0RC4-cli-alpineDebian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.5.0RC4-cliPHP 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.0RC4-fpm-alpineDebian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.5.0RC4-apacheDebian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.5.0RC4-fpmChangeLog
Core
- Fixed bug GH-20270 (Broken parent hook call with named arguments).
- Fixed bug GH-20183 (Stale EG(opline_before_exception) pointer through eval).
- Fixed bug GH-20194 (null offset deprecation not emitted for writes).
- Fixed bug GH-GH-20377 (final promoted properties without explicit visibility not automatically assigned).
Opcache
- Fixed bug GH-20012 (heap buffer overflow in jit).
- Partially fixed bug GH-17733 (Avoid calling wrong function when reusing file caches across differing environments).
PCRE
- Downgrade back to PCRE2 10.44, see GH-20341.
PgSql
- Fix segfaults when attempting to fetch row into a non-instantiable class name.
Reflection
- Fixed bug GH-20217 (
ReflectionClass::isIterable()incorrectly returns true for classes with property hooks).
Standard
- Fixed bug GH-20257 (
mail()heap overflow with an empty message in lf mode). - Fixed bug GH-20201 (AVIF images misdetected as HEIF after introducing HEIF support in
getimagesize()).
Streams
- Fixed bug GH-19798: XP_SOCKET XP_SSL (Socket stream modules): Incorrect condition for Win32/Win64.
URI
- Use the "includes credentials" rule of the WHATWG URL Standard to decide whether
Uri\WhatWg\Url::getUsername()and ::getPassword() getters should return null or an empty string. - Fixed the distinction between empty and missing username/password components of Uri\Rfc3986\Uri.
Zip
- Fixed missing
zend_release_fcall_info_cacheon the following methodsZipArchive::registerProgressCallback()andZipArchive::registerCancelCallback()on failure.
Commit List
Alexandre Daubois
- Fix GH-20217:
ReflectionClass::isIterable()should return false for classes with property hooks in GH-20241
Arnaud Le Blanc
- NEWS in 94f48f1ade
- NEWS in df9141079c
Calvin Buckley
- Move iconv const check into autoconf (8.3) in GH-20247
Daniel Scherzer
- UPGRADING 8.5: fix misplaced
()in GH-20272 ext/lexbor: usePHP_VERSIONfor extension version in GH-20291- Fix GH-20377: emit assignment for all final promoted properties in GH-20378
David Carlier
- Fix GH-20257: heap overflow on empty message in
lfmode in d378dce3e9 ext/zip: ZipArchive callback missingzend_release_fcall_info_cachein 3884438fe3ext/gd: Fix GH-19955 unit test in 3c063abba1ext/zip: fix memory leak when encryption is passed as userland array option in 55f7303d73
Gina Peter Banyard
- Fix GH-20194: null offset deprecation not emitted for writes in GH-20238
ext/pgsql: Fix segfaults when attempting to fetch row into a non-instantiable class name in GH-20180- Fix include paths for new pgsql tests in 14ed75e560
Ilija Tovilo
- Fix parent hook call with named args in b150eb35d4
- Fix stale EG(opline_before_exception) pointer through eval in 12920370e1
- Fix EG(current_execute_data) introduced in 1292037 in 5518165499
- Reset Z_EXTRA_P(op2) of
ZEND_INIT_FCALLfor opcache file cache in 50c7f498b9
Jakub Zelenka
- Fix GH-19798: XP_SOCKET XP_SSL: Incorrect condition for Win in eef11e048d
Máté Kocsis
- Add Tim as a maintainer of
ext/uriin f8d804b9ee - Fix GH-20274
SoapClient::__doRequestundocumented backwards incompatible in PHP 8.5 in GH-20278 - Reorganize
ext/uritests - withers in GH-19970 - Fix the distinction between missing and empty username/password for RFC3986 URIs in GH-20335
- Fix latest
ext/uriNEWS entry in 51ca716853 - Reorganize
ext/uritests - parsing in GH-20340
Niels Dossche
- Use MYSQL_TYPE constants instead of FIELD_TYPE in c7fc819c2d
- Fix UAF in tidy when tidySetErrorBuffer() fails in 58df9fcf98
- Fix macro check that I forgot to commit in aebe5c92a9
- Make
bug70417.phptless flaky in ed9529a7d3 - Fix GH-20281: `Dom\Document::getElementById()` is inconsistent after nodes are removed in cb1f9327c4
- ftp: Fix weird typo in GH-20295
- Fix GH-20240: FTP with SSL:
ftp_fput(): Connection timed out on successful writes in 8761c4e507 - Fix GH-20201: AVIF images misdetected as HEIF after introducing HEIF support in
getimagesize()in 0b974dd663 - Fix GH-20302: Freeing a phar alias may invalidate PharFileInfo objects in 6fe40de6e3
- Update zlib test to use separate file for
flock()in c3d6bf65d5 - Fixes to uri serialization in GH-20369
- Revert "Update pcre2lib from 10.45 to 10.46 (#19618)" in 3ef966ceb7
- Revert "Upgrade bundled pcre2lib to 10.45 (#17825)" in ed3e48b506
- NEWS for GH-20341 in f4b27bdc0d
- random: Fix memory leak when serialization fails in GH-20383
Tim Düsterhus
- uri: Use the “includes credentials” rule for WhatWg user/password getters in GH-20303
- uri: Unify exception testing for modification tests in GH-20368
Volker Dusch
- Update versions for PHP 8.5.0RC4 in 51a93fc002