PHP 8.5.0RC4: Downloads, Changelog, News

Release Information

Release
8.5.0RC4
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.0RC4 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.5.0RC4
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.5.0RC4-cli-alpine

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

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

ChangeLog

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_cache on the following methods ZipArchive::registerProgressCallback() and ZipArchive::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

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: use PHP_VERSION for 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 lf mode in d378dce3e9
  • ext/zip: ZipArchive callback missing zend_release_fcall_info_cache in 3884438fe3
  • ext/gd: Fix GH-19955 unit test in 3c063abba1
  • ext/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_FCALL for opcache file cache in 50c7f498b9

Jakub Zelenka

Máté Kocsis

  • Add Tim as a maintainer of ext/uri in f8d804b9ee
  • Fix GH-20274 SoapClient::__doRequest undocumented backwards incompatible in PHP 8.5 in GH-20278
  • Reorganize ext/uri tests - withers in GH-19970
  • Fix the distinction between missing and empty username/password for RFC3986 URIs in GH-20335
  • Fix latest ext/uri NEWS entry in 51ca716853
  • Reorganize ext/uri tests - 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.phpt less 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

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.