Release Information
- 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.0RC4 is the latest QA release in PHP 8.5.
Downloads
Source Code
Git Clone
Use Git to clone the 8.5.0RC2 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.5.0RC2How 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.0RC2-x64NTS.zip (32.97 MiB)
php-8.5.0RC2-x86NTS.zip (29.43 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.0RC2-x64TS.zip (33.09 MiB)
php-8.5.0RC2-x86TS.zip (29.52 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.0RC2-cli-alpineDebian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.5.0RC2-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.0RC2-fpm-alpineDebian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.5.0RC2-apacheDebian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.5.0RC2-fpmChangeLog
Core
- Fix OSS-Fuzz #447521098 (Fatal error during sccp shift eval).
- Fixed bug GH-20002 (Broken build on *BSD with MSAN).
- Fixed bug GH-19352 (Cross-compilation with musl C library).
- Revert deprecation of
__sleep()and__wakeup(). They're now soft-deprecated.
CLI
- Fix useless "Failed to poll event" error logs due to EAGAIN in CLI server with PHP_CLI_SERVER_WORKERS.
BcMath
- Fixed bug GH-20006 (Power of 0 of BcMath number causes UB).
Opcache
- Fixed segfault in function JIT due to NAN to bool warning.
- Fixed bug GH-19984 (Double-free of EG(errors)/persistent_script->warnings on persist of already persisted file).
- Fixed bug GH-19889 (race condition in
zend_runtime_jit(),zend_jit_hot_func()).
SOAP
- Fixed bug GH-19773 (SIGSEGV due to uninitialized soap_globals->lang_en).
Standard
- Fixed bug GH-19926 (reset internal pointer earlier while splicing array while COW violation flag is still set).
URI
- Fixed
Uri\WhatWg\Url::withPort()when an invalid value is passed. - Fixed
Uri\WhatWg\Url::parse()when resolving a relative URL against a base URL with query or fragment. - Fixed normalization of paths starting with two slashes for Uri\Rfc3986\Uri.
Commit List
Alexandre Daubois
- Fix GH-16319: protect fiber backtrace with null filename from crashing in GH-19973
- Fix GH-19926: reset internal pointer earlier while splicing array while COW violation flag is still set in GH-19929
- Fix misplaced entry in NEWS in 467e05b13a
Arnaud Le Blanc
- Add Alpine push job in GH-20038
- Fix race condition in
zend_runtime_jit(),zend_jit_hot_func()in 359ad80c4a - Upgrade Alpine in nightly job in 66708de841
David Carlier
- Fix GH-19932: Zip::setEncryptionName()/setEncryptionIndex() memory leak in 3ee56f68ed
- Fix GH-19922:
gzopen()double free in 93bac8cb1a - Fix GH-19955:
imagefttext()memory leak in e029f8f45b - Fix GH-19705: do not flush/write buffer on non writeable stream in 175afc4085
DubbleClick
- Fix cross-compilation for musl C library in 2b8d8ba7c4
Gina Peter Banyard
- opcache: Fix segfault in function JIT due to NAN to bool warning in GH-19947
- Update NEWS in 84ec65c599
Guillaume Outters
- Fix broken build on *BSD with MSAN in 26ca363a13
Ilija Tovilo
- Fix fatal error during sccp shift eval in 16a8591f28
- Fix double-free of EG(errors)/persistent_script->warnings on persist of already persisted file in bcd4be7d50
- Automatically skip tty tests if not on tty in 831597748b
- Fix flaky
gh19984.phpttest in faa4c7f9e6 - Skip
mysqli_fetch_all_data_types_variation.phpton PPC runner in 0e1addf8b5 - Skip
proc_open_multiplex.phpton PPC runner in a48de0a057
Jakub Zelenka
- Add stream filter convert.* tests in GH-19976
- Fix GH-19248: Use strerror_r instead of strerror in main in b7fdfb7147
- Do not use errno_t as it is not defined on musl in GH-20037
- Prevent use after stack scope in stream strerr code in GH-20040
Leo Gaskin
- Treat accept failing with
SOCK_EAGAINas success in CLI web server in 7e7d6d6380
Máté Kocsis
- Fix
Uri\WhatWg\Url::withPort()when an invalid value is passed in 43c3afeff7
Nicolas Grekas
- Revert deprecation of
__sleepand__wakeupin GH-19966
Niels Dossche
- Fix GH-19988:
zend_string_initwith NULL pointer in simplexml (UB) in d94846c3b4 - Fix NEWS order in 190f427198
- Fix uninitialized soap lang_en string on ZTS in 8987c0b661
- Fix GH-19998:
ext/standard/tests/file/bug46347.phptsometimes fails: racy in parallel in 21c2c07a24 - Fix GH-20006: Power of 0 of BcMath number causes UB in a380dcae4d
- Fix bug #67563: mysqli compiled with mysqlnd does not take ipv6 adress as parameter in 6db12e7cd8
- Fix NEWS formatting in d9ee711baf
- Fix GH-20009: XMLReader leak on RelaxNG schema failure in c617afd6d6
- Fix memory leak and invalid continuation after tar header writing fails in 7c859268c0
- Fix build in 9bd9e3a1f9
- Fix GH-17345: Bug GH-35916 was not completely fixed in 0ffa337a54
- Fix test in 71f8c39962
- Fix GH-20022: docker-php-ext-install DOM failed in b1d487a276
- DOM Windows build fix in GH-20026
- Fix GH-20011: Array of SoapVar of unknown type causes crash in eab2c2007b
- Fix NEWS in 5247df47a7
- Fix GH-20043:
array_uniqueassertion failure with RC1 array causing an exception on sort in 4fed57e746 - phar: Fix memory leaks when creating temp file fails when applying zip signature in 66c833444c
- Fix GH-19570: unable to fseek in /dev/zero and /dev/null in b7aeb0a69f
Remi Collet
- zip is now 1.22.7 in 6118c19ab8
Shivam Mathur
- Change master branch check to 8.6 in 107075605d
Theodore Brown
- Fix typos and grammar in UPGRADING in d79baba77d
Tim Düsterhus
- lexbor: Cherry pick "Core: Reset length in
lexbor_str_destroy()" in 11ce662101 - NEWS: Fix section order in c997212dbf
- Include
PHP-8.5branch in.github/workflows/push.ymlin 77af4780cc - CI: Do not save ccache for PRs for LINUX_X32 in db65d22ce2
- gdbinit: Fix printing of variable names in
print_cvsin GH-20077 - Regenerate
main/debug_gdb_scripts.cin 08924cd8c4 - uri: Update to uriparser-0.9.9-21-g08df3b2 in GH-19992
Volker Dusch
- Update versions for PHP 8.5.0RC2 in f3dab2b17f