PHP Release Notes

Last updated: Nov 21, 2025

  • Nov 20, 2025
    • Parsed from source:
      Nov 20, 2025
    • Detected by Releasebot:
      Nov 21, 2025
    PHP logo

    PHP

    Version 8.5.0

    PHP release introduces new language features including the pipe operator, attributes, first-class callables in constants, and improved URL parsing APIs. It also adds runtime target validation, backtraces for fatal errors, and clone-with support, plus extensive bug fixes and deprecations.

    Core

    • Added the #[\NoDiscard] attribute to indicate that a function's return value is important and should be consumed.
    • Added the (void) cast to indicate that not using a value is intentional.
    • Added get_error_handler(), get_exception_handler() functions.
    • Added support for casts in constant expressions.
    • Added the pipe (|>) operator.
    • Added the #[\DelayedTargetValidation] attribute to delay target errors for internal attributes from compile time to runtime.
    • Added support for final with constructor property promotion.
    • Added support for configuring the URI parser for the FTP/FTPS as well as the SSL/TLS stream wrappers as described in https://wiki.php.net/rfc/url_parsing_api#plugability.
    • Added PHP_BUILD_PROVIDER constant.
    • Added PHP_BUILD_DATE constant.
    • Added support for Closures and first class callables in constant expressions.
    • Add support for backtraces for fatal errors.
    • Add clone-with support to the clone() function.
    • Add RFC 3986 and WHATWG URL compliant APIs for URL parsing and manipulation (kocsismate, timwolla)
    • Fixed AST printing for immediately invoked Closure.
    • Properly handle __debugInfo() returning an array reference.
    • Properly handle reference return value from __toString().
    • Improved error message of UnhandledMatchError for zend.exception_string_param_max_len=0.
    • Fixed bug GH-15753 and GH-16198 (Bind traits before parent class).
    • Fixed bug GH-17951 (memory_limit is not always limited by max_memory_limit).
    • Fixed bug GH-20183 (Stale EG(opline_before_exception) pointer through eval).
    • Fixed bug GH-20113 (Missing new Foo(...) error in constant expressions).
    • Fixed bug GH-19844 (Don't bail when closing resources on shutdown).
    • Fixed bug GH-20177 (Accessing overridden private property in get_object_vars() triggers assertion error).
    • 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).
    • Fixed bug GH-19765 (object_properties_load() bypasses readonly property checks).
    • Fixed hard_timeout with --enable-zend-max-execution-timers.
    • Fixed bug GH-19839 (Incorrect HASH_FLAG_HAS_EMPTY_IND flag on userland array).
    • Fixed bug GH-19823 (register_argc_argv deprecation emitted twice when using OPcache).
    • Fixed bug GH-19480 (error_log php.ini cannot be unset when open_basedir is configured).
    • Fixed bug GH-19719 (Allow empty statements before declare(strict_types)).
    • Fixed bug GH-19934 (CGI with auto_globals_jit=0 causes uouv).
    • Fixed bug GH-19613 (Stale array iterator pointer).
    • Fixed bug GH-19679 (zend_ssa_range_widening may fail to converge).
    • Fixed bug GH-19681 (PHP_EXPAND_PATH broken with bash 5.3.0).
    • Fixed bug GH-18850 (Repeated inclusion of file with __halt_compiler() triggers "Constant already defined" warning).
    • Fixed bug GH-19476 (pipe operator fails to correctly handle returning by reference).
    • Fixed bug GH-19081 (Wrong lineno in property error with constructor property promotion).
    • Fixed bug GH-17959 (Relax missing trait fatal error to error exception).
    • Fixed bug GH-18033 (NULL-ptr dereference when using register_tick_function in destructor).
    • Fixed bug GH-18026 (Improve "expecting token" error for ampersand).
    • The report_memleaks INI directive has been deprecated.
    • Fixed OSS-Fuzz #439125710 (Pipe cannot be used in write context).
    • Fixed bug GH-19548 (Shared memory violation on property inheritance).
    • Fixed bug GH-19544 (GC treats ZEND_WEAKREF_TAG_MAP references as WeakMap references).
    • Fixed bug GH-18373 (Don't substitute self/parent with anonymous class).
    • Fix support for non-userland stream notifiers.
    • Fixed bug GH-19305 (Operands may be being released during comparison).
    • Fixed bug GH-19306 (Generator can be resumed while fetching next value from delegated Generator).
    • Fixed bug GH-19326 (Calling Generator::throw() on a running generator with a non-Generator delegate crashes).
    • Fix OSS-Fuzz #427814452 (pipe compilation fails with assert).
    • Fixed bug GH-16665 (\array and \callable should not be usable in class_alias).
    • Use clock_gettime_nsec_np() for high resolution timer on macOS if available.
    • Make clone() a function.
    • Introduced the TAILCALL VM, enabled by default when compiling with Clang>=19 on x86_64 or aarch64.
    • Enacted the follow-up phase of the "Path to Saner Increment/Decrement operators" RFC, meaning that incrementing non-numeric strings is now deprecated. (Girgias).
    • Various closure binding issues are now deprecated.
    • Constant redeclaration has been deprecated.
    • Marks the stack as non-executable on Haiku.
    • Deriving $_SERVER['argc'] and $_SERVER['argv'] from the query string is now deprecated.
    • Using null as an array offset or when calling array_key_exists() is now deprecated.
    • The disable_classes INI directive has been removed.
    • The locally predefined variable $http_response_header is deprecated.
    • Non-canonical cast names (boolean), (integer), (double), and (binary) have been deprecated.
    • The $exclude_disabled parameter of the get_defined_functions() function has been deprecated, as it no longer has any effect since PHP 8.0.
    • Terminating case statements with a semicolon instead of a colon has been deprecated.
    • The backtick operator as an alias for shell_exec() has been deprecated.
    • Returning null from __debugInfo() has been deprecated.
    • Support #[\Override] on properties.
    • Destructing non-array values (other than NULL) using [] or list() now emits a warning.
    • Casting floats that are not representable as ints now emits a warning.
    • Casting NAN to other types now emits a warning.
    • Implement GH-15680 (Enhance zend_dump_op_array to properly represent non-printable characters in string literals).
    • Fixed bug GH-17442 (Engine UAF with reference assign and dtor).
    • Do not use RTLD_DEEPBIND if dlmopen is available.
    Original source Report a problem
  • Oct 23, 2025
    • Parsed from source:
      Oct 23, 2025
    • Detected by Releasebot:
      Oct 24, 2025
    PHP logo

    PHP

    Version 8.4.14

    A broad, multi‑component release delivering extensive bug fixes across Core, CLI, and modules like Curl, XMLReader, ZIP, SimpleXML and more, boosting stability, memory safety, and crash prevention for a smoother user experience.

    Core

    • Fixed bug GH-19765 (object_properties_load() bypasses readonly property checks).
    • Fixed hard_timeout with --enable-zend-max-execution-timers.
    • Fixed bug GH-19792 (SCCP causes UAF for return value if both warning and exception are triggered).
    • Fixed bug GH-19653 (Closure named argument unpacking between temporary closures can cause a crash).
    • Fixed bug GH-19839 (Incorrect HASH_FLAG_HAS_EMPTY_IND flag on userland array).
    • Fixed bug GH-19480 (error_log php.ini cannot be unset when open_basedir is configured).
    • Fixed bug GH-20002 (Broken build on *BSD with MSAN).

    CLI

    • Fix useless "Failed to poll event" error logs due to EAGAIN in CLI server with PHP_CLI_SERVER_WORKERS.

    Curl

    • Fix cloning of CURLOPT_POSTFIELDS when using the clone operator instead of the curl_copy_handle() function to clone a CurlHandle.
    • Fix curl build and test failures with version 8.16.

    Date

    • Fixed GH-17159: "P" format for ::createFromFormat swallows string literals.

    DOM

    • Fix macro name clash on macOS.
    • Fixed bug GH-20022 (docker-php-ext-install DOM failed).

    GD

    • Fixed GH-19955 (imagefttext() memory leak).

    MySQLnd

    • Fixed bug #67563 (mysqli compiled with mysqlnd does not take ipv6 adress as parameter).

    Opcache

    • Fixed bug GH-19669 (assertion failure in zend_jit_trace_type_to_info_ex).
    • Fixed bug GH-19831 (function JIT may not deref property value).
    • Fixed bug GH-19889 (race condition in zend_runtime_jit(), zend_jit_hot_func()).

    Phar

    • Fix memory leak and invalid continuation after tar header writing fails.
    • Fix memory leaks when creating temp file fails when applying zip signature.

    SimpleXML

    • Fixed bug GH-19988 (zend_string_init with NULL pointer in simplexml (UB)).

    Soap

    • Fixed bug GH-19784 (SoapServer memory leak).
    • Fixed bug GH-20011 (Array of SoapVar of unknown type causes crash).

    Standard

    • Fixed bug GH-12265 (Cloning an object breaks serialization recursion).
    • Fixed bug GH-19701 (Serialize/deserialize loses some data).
    • Fixed bug GH-19801 (leaks in var_dump() and debug_zval_dump()).
    • Fixed bug GH-20043 (array_unique assertion failure with RC1 array causing an exception on sort).
    • Fixed bug GH-19926 (reset internal pointer earlier while splicing array while COW violation flag is still set).
    • Fixed bug GH-19570 (unable to fseek in /dev/zero and /dev/null).

    Streams

    • Fixed bug GH-19248 (Use strerror_r instead of strerror in main).
    • Fixed bug GH-17345 (Bug #35916 was not completely fixed).
    • Fixed bug GH-19705 (segmentation when attempting to flush on non seekable stream.

    XMLReader

    • Fixed bug GH-20009 (XMLReader leak on RelaxNG schema failure).

    Zip

    • Fixed bug GH-19688 (Remove pattern overflow in zip addGlob()).
    • Fixed bug GH-19932 (Memory leak in zip setEncryptionName()/setEncryptionIndex()).
    Original source Report a problem
  • Sep 25, 2025
    • Parsed from source:
      Sep 25, 2025
    • Detected by Releasebot:
      Oct 11, 2025
    PHP logo

    PHP

    Version 8.4.13

    A broad set of bug fixes across core and extensions improves stability and reliability from CLI to FPM, with memory leak and use-after-free protections, and better date, Intl, and streams handling. This release tightens security, fixes crashes, and corrects edge cases like file inclusion, SSL, and diagnostics.

    Core

    • Fixed bug GH-18850 (Repeated inclusion of file with __halt_compiler() triggers "Constant already defined" warning).
    • Partially fixed bug GH-19542 (Scanning of string literals >=2GB will fail due to signed int overflow).
    • Fixed bug GH-19544 (GC treats ZEND_WEAKREF_TAG_MAP references as WeakMap references).
    • Fixed bug GH-19613 (Stale array iterator pointer).
    • Fixed bug GH-19679 (zend_ssa_range_widening may fail to converge).
    • Fixed bug GH-19681 (PHP_EXPAND_PATH broken with bash 5.3.0).
    • Fixed bug GH-19720 (Assertion failure when error handler throws when accessing a deprecated constant).

    CLI

    • Fixed bug GH-19461 (Improve error message on listening error with IPv6 address).

    Date

    • Fixed date_sunrise() and date_sunset() with partial-hour UTC offset.

    DBA

    • Fixed bug GH-19706 (dba stream resource mismanagement).

    DOM

    • Fixed bug GH-19612 (Mitigate libxml2 tree dictionary bug).

    FPM

    • Fixed failed debug assertion when php_admin_value setting fails.

    Intl

    • Fixed bug GH-11952 (Fix locale strings canonicalization for IntlDateFormatter and NumberFormatter).

    Opcache

    • Fixed bug GH-19493 (JIT variable not stored before YIELD).

    OpenSSL

    • Fixed bug GH-19245 (Success error message on TLS stream accept failure).

    PGSQL

    • Fixed bug GH-19485 (potential use after free when using persistent pgsql connections).

    Phar

    • Fixed memory leaks when verifying OpenSSL signature.
    • Fix memory leak in phar tar temporary file error handling code.
    • Fix metadata leak when phar convert logic fails.
    • Fix memory leak on failure in phar_convert_to_other().
    • Fixed bug GH-19752 (Phar decompression with invalid extension can cause UAF).

    Standard

    • Fixed bug GH-16649 (UAF during array_splice).
    • Fixed bug GH-19577 (Avoid integer overflow when using a small offset and PHP_INT_MAX with LimitIterator).

    Streams

    • Remove incorrect call to zval_ptr_dtor() in user_wrapper_metadata().
    • Fix OSS-Fuzz #385993744.

    Zip

    • Fix memory leak in zip when encountering empty glob result.
    Original source Report a problem
  • Aug 28, 2025
    • Parsed from source:
      Aug 28, 2025
    • Detected by Releasebot:
      Oct 11, 2025
    PHP logo

    PHP

    Version 8.4.12

    Product release ships a sweeping set of fixes across Core and modules, boosting stability, security, and performance. Users gain safer generator handling, stronger calendar and OpenSSL behavior, and broader platform reliability with targeted bug fixes.

    Core

    • Fixed GH-19169 build issue with C++17 and ZEND_STATIC_ASSERT macro.
    • Fixed bug GH-19053 (Duplicate property slot with hooks and interface property).
    • Fixed bug GH-19044 (Protected properties are not scoped according to their prototype).
    • Fixed bug GH-18581 (Coerce numeric string keys from iterators when argument unpacking).
    • Fixed OSS-Fuzz #434346548 (Failed assertion with throwing __toString in binary const expr).
    • Fixed bug GH-19305 (Operands may be being released during comparison).
    • Fixed bug GH-19303 (Unpacking empty packed array into uninitialized array causes assertion failure).
    • Fixed bug GH-19306 (Generator can be resumed while fetching next value from delegated Generator).
    • Fixed bug GH-19326 (Calling Generator::throw() on a running generator with a non-Generator delegate crashes).
    • Fixed bug GH-18736 (Circumvented type check with return by ref + finally).
    • Fixed bug GH-19065 (Long match statement can segfault compiler during recursive SSA renaming).

    Calendar

    • Fixed bug GH-19371 (integer overflow in calendar.c).

    FTP

    • Fix theoretical issues with hrtime() not being available.

    GD

    • Fix incorrect comparison with result of php_stream_can_cast().

    Hash

    • Fix crash on clone failure.

    Intl

    • Fix memleak on failure in collator_get_sort_key().
    • Fix return value on failure for resourcebundle count handler.

    LDAP

    • Fixed bug GH-18529 (additional inheriting of TLS int options).

    LibXML

    • Fixed bug GH-19098 (libxml<2.13 segmentation fault caused by php_libxml_node_free).

    MbString

    • Fixed bug GH-19397 (mb_list_encodings() can cause crashes on shutdown).

    Opcache

    • Reset global pointers to prevent use-after-free in zend_jit_status().
    • Fix issue with JIT restart and hooks.
    • Fix crash with dynamic function defs in hooks during preload.

    OpenSSL

    • Fixed bug GH-18986 (OpenSSL backend: incorrect RAND_{load,write}_file() return value check).
    • Fix error return check of EVP_CIPHER_CTX_ctrl().
    • Fixed bug GH-19428 (openssl_pkey_derive segfaults for DH derive with low key_length param).

    PDO Pgsql

    • Fixed dangling pointer access on _pdo_pgsql_trim_message helper.

    SOAP

    • Fixed bug GH-18640 (heap-use-after-free ext/soap/php_encoding.c:299:32 in soap_check_zval_ref).

    Sockets

    • Fix some potential crashes on incorrect argument value.

    Standard

    • Fixed OSS Fuzz #433303828 (Leak in failed unserialize() with opcache).
    • Fix theoretical issues with hrtime() not being available.
    • Fixed bug GH-19300 (Nested array_multisort invocation with error breaks).

    Windows

    • Free opened_path when opened_path_len >= MAXPATHLEN.
    Original source Report a problem

This is the end. You've seen all the release notes in this feed!

Related vendors