php8.5
← All releases
PHP 8.4 Thursday, 27 August 2026

PHP 8.4.25

33 changes across 19 components.

Core

  • Fixed bug GH-23088 (Stack overflow when comparing deeply nested arrays).

Date

  • Fixed leak on double DatePeriod::__construct() call.

DOM

  • Fixed bug GH-23116 (Stack overflow when normalizing a deeply nested DOMDocument).
  • Fixed bug GH-23117 (Stack overflow when normalizing a deeply nested Dom\XMLDocument).
  • Fixed bug GH-22825 (DOMElement::setAttribute() fails silently when the DTD declares a default value for the attribute).
  • Fixed bug GH-22447 (UAF at dom_objects_free_storage when setting an attribute node that collides by local name with a namespaced attribute).
  • Fixed bug GH-23120 (Stack overflow when comparing deeply nested DOM nodes with DOMNode::isEqualNode()).

LibXML

  • Fixed bug GH-22752 (Build failure with libxml 2.15).

MBString

  • Fixed bug GH-22779 (mb_strrpos() returns the wrong position for a negative offset in a non-UTF-8 encoding).
  • Fixed bug GH-21036 (mb_ereg_search_getregs() crashes after mb_eregi() invalidates the regex cache).

Opcache

  • Fixed bug GH-22857 (Function JIT emits wrong code for FETCH_OBJ_FUNC_ARG on a property hook getter, losing register-held variables).
  • Fixed bug GH-22916 (Preserve parent regs in zend_jit_deoptimizer_start()).

OpenSSL

  • Fix missing error check on invalid alpn protocols.

PCRE

  • Fixed bug GH-21134 (Crash with \C + UTF-8). Using \C in UTF-8 patterns is now forbidden.

Reflection

  • Fixed bug GH-22905 (Reflection exception messages truncate on null bytes).
  • Fixed ReflectionProperty::isLazy() and skipLazyInitialization() using the parent slot when a child class hooks an inherited property.
  • Fixed segfault in ReflectionMethod::createFromMethodName() on an uninstantiable subclass.

Readline

  • Fixed class constant completion in the interactive shell.

Zip

  • Fixed bug GH-17787 (ZipArchive stream stops reading early when the archive is freed while the stream is still open).
  • Fixed ZipArchive::addGlob() and ZipArchive::addPattern() ignoring their default options when no options array is given.

Session

  • Fix corruption in mod_mm.
  • Fixed bug GH-23043 (broken session id code can cause zend_mm_heap corrupted).

SimpleXML

  • Fixed integer element offsets that cannot resolve aliasing an existing element.
  • Fixed segfault when comparing uninitialized SimpleXMLElement instances.

Sockets

  • Fixed various memory related issues in ext/sockets.

SQLite

  • Fix leak when trying to close db if blob stream is still open.

Standard

  • Fixed bug GH-23111 (Stack overflow in array_walk_recursive() with deeply nested arrays).
  • Fixed bug GH-23113 (Stack overflow in array_replace_recursive() with deeply nested arrays).
  • Fixed bug GH-23115 (Stack overflow in compact() with deeply nested arrays).
  • Fixed stack overflow in count() with COUNT_RECURSIVE and deeply nested arrays.

Streams

  • Fixed bug GH-15836 (Use-after-free when a user stream filter accesses $this->stream during the close flush).

Sysvshm

  • Fixed out-of-bounds write when shm_attach() opens an existing segment with a size larger than the segment actually is.

XSL

  • Fixed use-after-free when a DOMDocument subclass __clone() retains the stylesheet copy made by XSLTProcessor::importStylesheet().