[PHP-WEBMASTER] [web-php] master: Announce PHP 8.4.15

Author: Calvin Buckley (NattyNarwhal)
Date: 2025-11-20T09:51:33-04:00

Commit: Announce PHP 8.4.15 · php/web-php@1997486 · GitHub
Raw diff: PHP 8.4.15 Released!

Announce PHP 8.4.15

Changed paths:
  A archive/entries/2025-11-20-2.xml
  A releases/8_4_15.php
  M ChangeLog-8.php
  M archive/archive.xml
  M include/release-qa.php
  M include/releases.inc
  M include/version.inc

Diff:

diff --git a/ChangeLog-8.php b/ChangeLog-8.php
index dd9bd20301..075068b6b8 100644
--- a/ChangeLog-8.php
+++ b/ChangeLog-8.php
@@ -9,6 +9,113 @@

<a id="PHP_8_4"></a>

+<section class="version" id="8.4.15"><!-- {{{ 8.4.15 -->
+<h3>Version 8.4.15</h3>
+<b><?php release_date('20-Nov-2025'); ?></b>
+<ul><li>Core:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 19934); ?> (CGI with auto_globals_jit=0 causes uouv).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20073); ?> (Assertion failure in WeakMap offset operations on reference).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20085); ?> (Assertion failure when combining lazy object get_properties exception with foreach loop).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 19844); ?> (Don't bail when closing resources on shutdown).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20177); ?> (Accessing overridden private property in get_object_vars() triggers assertion error).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20270); ?> (Broken parent hook call with named arguments).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20183); ?> (Stale EG(opline_before_exception) pointer through eval).</li>
+</ul></li>
+<li>DOM:
+<ul>
+ <li>Partially fixed bug <?php githubissuel('php/php-src', 16317); ?> (DOM classes do not allow __debugInfo() overrides to work).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20281); ?> (\Dom\Document::getElementById() is inconsistent after nodes are removed).</li>
+</ul></li>
+<li>Exif:
+<ul>
+ <li>Fix possible memory leak when tag is empty.</li>
+</ul></li>
+<li>FPM:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 19974); ?> (fpm_status_export_to_zval segfault for parallel execution).</li>
+</ul></li>
+<li>FTP:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20240); ?> (FTP with SSL: ftp_fput(): Connection timed out on successful writes).</li>
+</ul></li>
+<li>GD:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20070); ?> (Return type violation in imagefilter when an invalid filter is provided).</li>
+</ul></li>
+<li>Intl:
+<ul>
+ <li>Fix memory leak on error in locale_filter_matches().</li>
+</ul></li>
+<li>LibXML:
+<ul>
+ <li>Fix not thread safe schema/relaxng calls.</li>
+</ul></li>
+<li>MySQLnd:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 8978); ?> (SSL certificate verification fails (port doubled)).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20122); ?> (getColumnMeta() for JSON-column in MySQL).</li>
+</ul></li>
+<li>Opcache:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20081); ?> (access to uninitialized vars in preload_load()).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20121); ?> (JIT broken in ZTS builds on MacOS 15).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 19875); ?> (JIT 1205 segfault on large file compiled in subprocess).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20012); ?> (heap buffer overflow in jit).</li>
+ <li>Partially fixed bug <?php githubissuel('php/php-src', 17733); ?> (Avoid calling wrong function when reusing file caches across differing environments).</li>
+</ul></li>
+<li>PgSql:
+<ul>
+ <li>Fix memory leak when first string conversion fails.</li>
+ <li>Fix segfaults when attempting to fetch row into a non-instantiable class name.</li>
+</ul></li>
+<li>Phar:
+<ul>
+ <li>Fix memory leak of argument in webPhar.</li>
+ <li>Fix memory leak when setAlias() fails.</li>
+ <li>Fix a bunch of memory leaks in phar_parse_zipfile() error handling.</li>
+ <li>Fix file descriptor/memory leak when opening central fp fails.</li>
+ <li>Fix memleak+UAF when opening temp stream in buildFromDirectory() fails.</li>
+ <li>Fix potential buffer length truncation due to usage of type int instead of type size_t.</li>
+ <li>Fix memory leak when openssl polyfill returns garbage.</li>
+ <li>Fix file descriptor leak in phar_zip_flush() on failure.</li>
+ <li>Fix memory leak when opening temp file fails while trying to open gzip-compressed archive.</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20302); ?> (Freeing a phar alias may invalidate PharFileInfo objects).</li>
+</ul></li>
+<li>Random:
+<ul>
+ <li>Fix Randomizer::__serialize() w.r.t. INDIRECTs.</li>
+</ul></li>
+<li>Reflection:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20217); ?> (ReflectionClass::isIterable() incorrectly returns true for classes with property hooks).</li>
+</ul></li>
+<li>SimpleXML:
+<ul>
+ <li>Partially fixed bug <?php githubissuel('php/php-src', 16317); ?> (SimpleXML does not allow __debugInfo() overrides to work).</li>
+</ul></li>
+<li>Streams:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 19798); ?>: XP_SOCKET XP_SSL (Socket stream modules): Incorrect condition for Win32/Win64.</li>
+</ul></li>
+<li>Tidy:
+<ul>
+ <li>Fixed <?php githubissuel('php/php-src', 19021); ?> (improved tidyOptGetCategory detection).</li>
+ <li>Fix UAF in tidy when tidySetErrorBuffer() fails.</li>
+</ul></li>
+<li>XMLReader:
+<ul>
+ <li>Fix arginfo/zpp violations when LIBXML_SCHEMAS_ENABLED is not available.</li>
+</ul></li>
+<li>Windows:
+<ul>
+ <li>Fix <?php githubissuel('php/php-src', 19722); ?> (_get_osfhandle asserts in debug mode when given a socket).</li>
+</ul></li>
+</ul>
+<!-- }}} --></section>
+
+
+
<section class="version" id="8.4.14"><!-- {{{ 8.4.14 -->
<h3>Version 8.4.14</h3>
<b><?php release_date('23-Oct-2025'); ?></b>
diff --git a/archive/archive.xml b/archive/archive.xml
index 366668344f..547fde4396 100644
--- a/archive/archive.xml
+++ b/archive/archive.xml
@@ -9,6 +9,7 @@
     <uri>PHP: Manual Quick Reference;
     <email>php-webmaster@lists.php.net</email>
   </author>
+ <xi:include href="entries/2025-11-20-2.xml"/>
   <xi:include href="entries/2025-11-20-1.xml"/>
   <xi:include href="entries/2025-11-13-1.xml"/>
   <xi:include href="entries/2025-11-06-1.xml"/>
diff --git a/archive/entries/2025-11-20-2.xml b/archive/entries/2025-11-20-2.xml
new file mode 100644
index 0000000000..f995eadcab
--- /dev/null
+++ b/archive/entries/2025-11-20-2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<entry xmlns="http://www.w3.org/2005/Atom&quot;&gt;
+ <title>PHP 8.4.15 Released!</title>
+ <id>PHP: News Archive - 2025;
+ <published>2025-11-20T13:48:26+00:00</published>
+ <updated>2025-11-20T13:48:26+00:00</updated>
+ <link href="PHP; rel="alternate" type="text/html"/>
+ <link href="PHP: News Archive - 2025; rel="via" type="text/html"/>
+ <category term="releases" label="New PHP release"/>
+ <category term="frontpage" label="PHP.net frontpage news"/>
+ <content type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml&quot;&gt;&lt;p&gt;The PHP development team announces the immediate availability of PHP 8.4.15. This is a bug fix release.</p>
+
+<p>All PHP 8.4 users are encouraged to upgrade to this version.</p>
+
+<p>For source downloads of PHP 8.4.15 please visit our <a href="PHP: Manual Quick Reference page</a>,
+Windows source and binaries can be found on <a href="https://windows.php.net/download/&quot;&gt;windows\.php\.net/download/&lt;/a&gt;\.
+The list of changes is recorded in the <a href="PHP: PHP 8 ChangeLog.
+</p> </div>
+ </content>
+</entry>
diff --git a/include/release-qa.php b/include/release-qa.php
index dc5d5b31e4..c49614c776 100644
--- a/include/release-qa.php
+++ b/include/release-qa.php
@@ -88,12 +88,12 @@
         'active' => true,
         'release' => [
             'type' => 'RC',
- 'number' => 1,
- 'sha256_bz2' => 'f6540192e152f23b620718e516026b5b75bd6b3f5b63efe81c001426be82103e',
- 'sha256_gz' => 'e0fa65261c114161b1c95274c0e9a4f0e0b77d4895104e99055c907806c8f90f',
- 'sha256_xz' => '0674d217795e27b61c873d69197ba30be44e86a8af23faf171283cc4bd28d5ed',
+ 'number' => 0,
+ 'sha256_bz2' => '',
+ 'sha256_gz' => '',
+ 'sha256_xz' => '',
             'date' => '06 Nov 2025',
- 'baseurl' => 'Index of /~calvinb‘,
+ 'baseurl' => 'https://downloads.php.net/’,
         ],
     ],

diff --git a/include/releases.inc b/include/releases.inc
index 8c249fa2c4..28c88737c1 100644
--- a/include/releases.inc
+++ b/include/releases.inc
@@ -2,6 +2,43 @@
$OLDRELEASES = array (
   8 =>
   array (
+ '8.4.14' =>
+ array (
+ 'announcement' =>
+ array (
+ 'English' => '/releases/8_4_14.php',
+ ),
+ 'tags' =>
+ array (
+ 0 => '',
+ ),
+ 'date' => '23 Oct 2025',
+ 'source' =>
+ array (
+ 0 =>
+ array (
+ 'filename' => 'php-8.4.14.tar.gz',
+ 'name' => 'PHP 8.4.14 (tar.gz)',
+ 'sha256' => '40341f3e03a36d48facdb6cc2ec600ff887a1af9a5e5fee0b40f40b61488afae',
+ 'date' => '23 Oct 2025',
+ ),
+ 1 =>
+ array (
+ 'filename' => 'php-8.4.14.tar.bz2',
+ 'name' => 'PHP 8.4.14 (tar.bz2)',
+ 'sha256' => 'f2139ce4cb7a6c5643ee98caa34e5c32ba841c2ba293e34a3d0357faa84bb3e7',
+ 'date' => '23 Oct 2025',
+ ),
+ 2 =>
+ array (
+ 'filename' => 'php-8.4.14.tar.xz',
+ 'name' => 'PHP 8.4.14 (tar.xz)',
+ 'sha256' => 'bac90ee7cf738e814c89b6b27d4d2c4b70e50942a420837e1a22f5fd5f9867a3',
+ 'date' => '23 Oct 2025',
+ ),
+ ),
+ 'museum' => false,
+ ),
     '8.3.27' =>
     array (
       'announcement' =>
diff --git a/include/version.inc b/include/version.inc
index a5e639802e..14942e4179 100644
--- a/include/version.inc
+++ b/include/version.inc
@@ -20,13 +20,13 @@ $RELEASES = (function () {

     /* PHP 8.4 Release */
     $data['8.4'] = [
- 'version' => '8.4.14',
- 'date' => '23 Oct 2025',
+ 'version' => '8.4.15',
+ 'date' => '20 Nov 2025',
         'tags' => [''], // Set to ['security'] for security releases.
         'sha256' => [
- 'tar.gz' => '40341f3e03a36d48facdb6cc2ec600ff887a1af9a5e5fee0b40f40b61488afae',
- 'tar.bz2' => 'f2139ce4cb7a6c5643ee98caa34e5c32ba841c2ba293e34a3d0357faa84bb3e7',
- 'tar.xz' => 'bac90ee7cf738e814c89b6b27d4d2c4b70e50942a420837e1a22f5fd5f9867a3',
+ 'tar.gz' => '51d23c98073c1e88c98c12b175736a11316cd3d4753f8d060934e53e5a9945c3',
+ 'tar.bz2' => 'b7155bdd498d60d63e4bc320dc224863976d31b5bd9339699726c961255a3197',
+ 'tar.xz' => 'a060684f614b8344f9b34c334b6ba8db1177555997edb5b1aceab0a4b807da7e',
         ]
     ];

diff --git a/releases/8_4_15.php b/releases/8_4_15.php
new file mode 100644
index 0000000000..cc8187cd6c
--- /dev/null
+++ b/releases/8_4_15.php
@@ -0,0 +1,16 @@
+<?php
+$_SERVER['BASE_PAGE'] = 'releases/8_4_15.php';
+include_once __DIR__ . '/../include/prepend.inc';
+site_header('PHP 8.4.15 Release Announcement');
+?>
+<h1>PHP 8.4.15 Release Announcement</h1>
+
+<p>The PHP development team announces the immediate availability of PHP 8.4.15. This is a bug fix release.</p>
+
+<p>All PHP 8.4 users are encouraged to upgrade to this version.</p>
+
+<p>For source downloads of PHP 8.4.15 please visit our <a href="PHP: Manual Quick Reference page</a>,
+Windows source and binaries can be found on <a href="https://windows.php.net/download/&quot;&gt;windows\.php\.net/download/&lt;/a&gt;\.
+The list of changes is recorded in the <a href="PHP: PHP 8 ChangeLog.
+</p>
+<?php site_footer();