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.0alpha4 is the latest QA release in PHP 8.5.
Downloads
Source Code
Git Clone
Use Git to clone the 8.5.0alpha3 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.5.0alpha3
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.
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.0alpha3-cli-alpine
Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.5.0alpha3-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.0alpha3-fpm-alpine
Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.5.0alpha3-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.0alpha3-fpm
Commit List
Alexandre Daubois
- Add
ReflectionProperty::getMangledName()
in GH-18980
Arnaud Le Blanc
- Introduce
zend_vm_opcode_handler_t
/zend_vm_opcode_handler_func_t
in 7f7b3cdb90 - Add unique entry point for extra tests in b633720585
- Fix linker failure when building Opcache statically in 73b1ebfa20
- Make OPcache non-optional in 7b4c14dc10
- Fix error handling inconsistency with opcache in 7b3e68ff69
- Fix out of tree builds in GH-19283
- Refresh
zend_mm
shadow key on fork in c561f7da85 - Call
php_child_init()
after fork during preloading in GH-19287
Artem Ukrainskiy
- Refactor traverse_for_entities for unescape_html_entities in e0c3f46496
Ayesh Karunaratne
ext/curl
: AddCURLOPT_SSL_SIGNATURE_ALGORITHMS
option in 6f3bc59950
Benstone Zhang
- Add support for HEIF/HEIC to getimagesize in dfac2da7fb
Bob Weinand
Bogdan Ungureanu
- Intl: IntlListFormatter - update exception message in GH-19282
DanielEScherzer
- Arginfo: avoid using temporary zvals for initializing attribute values in GH-19141
Daniel Scherzer
ext/reflection
: voidifyformat_default_value()
in GH-19234- gen_stub: add maximum option to
generateVersionDependentFlagCode()
in 1218e39b07 - gen_stub: create
VersionFlags
class in 0d221c5b70 - gen_stub: move
generateClassEntryCode()
intoFileInfo
in 24d94197fd - gen_stub: move
getFileDocComments()
intoFileInfo
in 30c8480a39 - gen_stub: simplify
generateFunctionEntries()
in 15547a2eb1 - gen_stub: remove unused
AbstractConstName::equals()
in 8bd8223bad - gen_stub: replace
AbstractConstName::isClassConst()
withinstanceof
in e5d4d656ab - gen_stub: add
SimpleType::toTypeInfo()
in 9dfee95dae - gen_stub: simplify
FuncInfo::getFunctionEntry()
in 988da4c951 - gen_stub: simplify
FuncInfo::getFramelessDeclaration()
in 49f1685cde - gen_stub: replace
FunctionOrMethodName::isMethod()
withinstanceof
in 0b01640b58 - gen_stub: make some
FuncInfo
methods private in 2ed5472f06 - gen_stub: inline
computeStubHash()
in ecc403a8fa - gen_stub: avoid unneeded regex match in 5ae87ffef4
- gen_stub: add
ConstInfo::getPredefinedConstantElement()
in 74f7ecbe04 - gen_stub: simplify
ClassInfo::getRegistration()
in 747ecce51f - Arginfo: reuse
zend_string
objects for initializing attribute values in GH-19241 - gen_stub: Update PHP-Parser to 5.6.0 in GH-19271
- UPGRADING.INTERNALS: document
ZEND_DECLARE_ATTRIBUTED_CONST
in GH-19270 ext/standard
: drop old smart_string headers in GH-19233- Update versions for PHP 8.5.0alpha3 in ae73654909
David Carlier
ext/sockets
: multicast on unsupported socket type error change in 64852b44b5- [ci kip] UPDATE NEWS in ff6c1c7a30
- Fixed GH-19261: msgfmt_parse_message leaks on message format failure in e1c4a0ae51
ext/posix
:posix_kill()
process_id range check in 3b4f2b0798ext/posix
: value ranges check for posix_setrlimit and posix_setpgid in f72105be81
David CARLIER
ext/intl
: using a bit more modern c++ memory management features. in GH-19163ext/intl
: reducing raw pointer usage in C++ part, using smart ones instead. in GH-19179- zend:
ZEND_NONSTRING
for clang >= 20 support in GH-19193 - Fix GH-19197: session build fails on system with memcpy as macro. in GH-19198
ext/intl
: c++ memory management application to timezone class internals. in GH-19184ext/intl
: GregorianCalendar using C++ upcasting operator. in GH-19216ext/sockets
: cmsg data array elements using uint32_t type instead. in GH-19254ext/sockets
: using accept4 wheneever possible forphp_accept_connect
helper in GH-19268ext/intl
: convert C part to C++ step 1. in GH-19231
dixyes
- Free opened_path when opened_path_len >= MAXPATHLEN in 5dd965117a
ext/pdo_pgsql
: Fix _pdo_pgsql_trim_message bad access in e16df981bf
Dmitrii Derepko
- refactor: Drop unused op_array param from
zend_get_brk_cont_target()
(GH-19117) in ea9a7b2523 ext/standard
: handle html entities empty string before processing in GH-19220
Emre Çalışkan
- Add support for
CURLINFO_CONN_ID
incurl_getinfo()
in GH-18984 - Add support for
CURLINFO_QUEUE_TIME_T
incurl_getinfo()
in GH-19147
Florian Engelhardt
- Fix GH-19226: Segfault when spawning new thread in soap extension in 29b38a1ced
Gina Peter Banyard
ext/intl
: RefactorIntlRuleBasedBreakIterator::__construct()
in GH-19164ext/tidy
: tidyOptGetType returns an enum that is fully checked in 01dbee83e1ext/tidy
: refactorphp_tidy_set_tidy_opt()
in 0a130caf58ext/tidy
: Refactorphp_tidy_parse_string()
in 4433986e40ext/tidy
: refactorphp_tidy_file_to_mem()
in 419f6750c0ext/snmp
: no need to use a smart_string for error message in GH-19171ext/intl
: Split error tests out and stop relying onut_common()
testing in GH-19266- Remove myself from bcmath codeowner in b75c2dcb02
ext/gd
: Fix comparison with result ofphp_stream_can_cast()
in 83b8d2c290ext/sysvshm
:shm_detach()
always returns true in e897621be9ext/sysvshm
: voidifyphp_remove_shm_data()
in 4844c7a92fext/sysvshm
: refactorphp_put_shm_data()
in 6154fac64dext/sysvshm
: use size_t and ssize_t instead ofzend_long
in bac158c80dext/sysvsem
: use bool type instead of int in 87d83d162dext/sysvmsg
: various minor refactorings in f63a35d944ext/intl
: Fix return value on failure for resourcebundle count handler in 6b0a80903b
Ilija Tovilo
- Fix lineno for cpp assignment in 0e80be83b3
- Fix properties_info_table for abstract properties in c8cc23336d
- Implement
Closure::getCurrent()
to retrieve current closure in eb65ec41b7 - Leak in failed
unserialize()
with opcache in 5d1636e40b - Fix '?' in
ReflectionNamedType::getName()
fromReflectionProperty::getSettableType()
in 5a06842bf8 - Coerce numeric string keys from iterators when argument unpacking in 23ec35bf4a
- Fix error recording with file cache only (GH-19278) in 35a4656a59
Jakub Zelenka
- Remove curl OpenSSL locking for unsupported versions in GH-18784
- Fix GH-18529: additional inheriting of TLS int options in eade5c17ea
- Skip LDAP TLS max version test for now in 8516ae86d7
- Add digest algo param to public encrypt and private decrypt in b1fce8a98c
- FPM: Implement configurable access log limit in cfb3e98c84
- Remove unused FPM_LOG_BUFFER in cecf9b02e5
- Integrate OpenSSL libctx to pwhash in GH-19236
Jorg Adam Sowa
- Add macos 15 to push GH action (GH-18514) in da7d2e14ac
Marc Bennewitz
- Removed unused var exec_time and fetch time in opcache/zend_accelerator_module.c (GH-19235) in 7c1e461032
Máté Kocsis
- Cherry pick some recent lexbor changes in 889f38135d
- Fix parsing URIs with empty hosts in 967377369b
- Add missing news and upgrading notes for
ext/uri
in 02b94556cf - Update real-time benchmark config after opcache became mandatory in e48099a03c
Niels Dossche
- Fix GH-18986: OpenSSL backend: incorrect RAND_{load,write}
_file()
return value check in a8086be81c - Fix memleak on failure in
collator_get_sort_key()
in b495ce0371 - Fix error return check of EVP_CIPHER_CTX_ctrl() in cd8722304c
- Fix incorrect OpenSSL merge in 478a520900
- hash: Use
zend_string_efree()
where possible in GH-19137 - Remove redundant operations from
zend_llist_clean()
in GH-19143 - ext/standard/password: Use
zend_string_efree()
where possible in GH-19150 - Deduplicate error-handling code in finfo_open in GH-19149
ext/hash
: Remove incorrect zval_ptr_dtor in bdca73cc14ext/socket
: Remove incorrect zval_ptr_dtor in d11099ae32- NEWS for GH-19162 in 86aaded7e5
- Disable error handler in fuzzer in GH-19183
- Migrate from xmlNewNode to xmlNewDocNode in GH-19182
- Expose gfxinfo as
php_gfxinfo
in 05bb051243 - Add API to register custom image handlers in 8db883c540
- Implement SVG image handler in 0962c325fa
- UPGRADING, UPGRADING.INTERNALS, and NEWS for SVG and extensible image API in 726516b8c1
- Fix GH-19098: libxml<2.13 segmentation fault caused by
php_libxml_node_free
in 312869381a - Fix GH-18640: heap-use-after-free
ext/soap/php_encoding.c:299
:32 in soap_check_zval_ref in 6cc4ae1f1d - Make specialization of x64
zend_safe_address()
for nmemb==1 in GH-19203 - Avoid modulo operation in loop in
array_chunk
in 4762d46427 - Allocate array eagerly in
array_chunk
in 1b169bf28e - NEWS and UPGRADING for
array_chunk
in 95f1350ca8 - Fix test conflict between chmod_variation2 and file_variation5 in 605ee05491
- Add missing cc clobber in 13c781f04d
- Run FreebSD CI under 13.5 in be88192594
- Fix unterminated string GCC warnings in mbstring in GH-19192
- Fix arginfo/zpp violation if
zend_hrtime
is not available in ad2143f3b0 - Handle broken hrtime in ftp in beeeee2978
- NEWS for hrtime in FTP and standard in f94c11fff8
- Fix exception handling in
shm_put_var()
in GH-19279
Peter Kokot
- Remove duplicate libxml2-dev in GH-19185
- Fix bug #51558: shared readline build fails (#15242) in 17df11e3f7
Petr Sumbera
- Fix GH-19169:
ZEND_STATIC_ASSERT
for -std=c++17 in be09985c87
Samuel Melrose
- Add
opcache_is_script_cached_in_file_cache()
function in 6f1501a601
Tim Düsterhus
ext/xml
: Suppress libxml deprecation for_xmlParserCtxt.inState
in GH-19131zend_objects
: Remove unnecessary refcounting when calling__clone()
in GH-19145- RFC: Clone with v2 in GH-18747
zend_API
: Makescope
aconst
zend_class_entry` for
zend_updateproperty()` in GH-19156- streams: Re-add support for arbitrary metadata for stream notifier functions in GH-19158
- uri: Improve exceptions for
Uri\Rfc3986\Uri
in GH-19161 - bless_tests: Replace the object ID in
var_dump()
for namespaced classes in GH-19174 - main: Add
PHP_BUILD_PROVIDER
userland constant in GH-19157 - opcache: Disallow changing
opcache.memory_consumption
when SHM is set up in GH-19146 - Fix expectations in version string tests in d3ebf97d77
Volker Dusch
- RM docs: Update social media annoncement process in GH-19159