Author: Eric Mann (ericmann)
Date: 2026-07-30T07:57:54-07:00
Commit:
https://github.com/php/web-php/commit/6f3f21b0ce4bbc6dde75135300ffae5aba0fedf8
Raw diff:
https://github.com/php/web-php/commit/6f3f21b0ce4bbc6dde75135300ffae5aba0fedf8.diff
Announce PHP 8.4.24
Changed paths:
A archive/entries/2026-07-30-5.xml
A releases/8_4_24.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 42a72e5885..1b439c407c 100644
--- a/ChangeLog-8.php
+++ b/ChangeLog-8.php
@@ -1236,6 +1236,118 @@
<a id="PHP_8_4"></a>
+<section class="version" id="8.4.24"><!-- {{{ 8.4.24 -->
+<h3>Version 8.4.24</h3>
+<b><?php release_date('30-Jul-2026'); ?></b>
+<ul><li>BCMath:
+<ul>
+ <li>Fixed <?php githubsecurityl('php/php-src', 'x692-q9x7-8c3f'); ?>
(Out-of-bounds write in bccomp()). (CVE-2026-17544)</li>
+</ul></li>
+<li>Calendar:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22602); ?> (gregoriantojd()
and juliantojd() integer overflow with INT_MAX year).</li>
+</ul></li>
+<li>Date:
+<ul>
+ <li>Update timelib to 2022.17.</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 19803); ?> (Parsing a string
with a single white space does create an error).</li>
+ <li>Fixed Unix timestamps in February of the year 0 are misparsed with
@-notation.</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 11310); ?> (__debugInfo does
nothing on userland classes extending Date classes).</li>
+</ul></li>
+<li>DBA:
+<ul>
+ <li>Fixed OOB read on malformed length field in dba flatfile handler.</li>
+</ul></li>
+<li>DOM:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22570); ?> (Stack overflow
when serializing a deeply nested Dom\XMLDocument).</li>
+</ul></li>
+<li>Exif:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 11020); ?> (exif_read_data()
emits a spurious "Illegal IFD size" warning when an IFD is not followed by a
next-IFD offset).</li>
+</ul></li>
+<li>GD:
+<ul>
+ <li>Upgrade libgd. (CVE-2026-9672)</li>
+</ul></li>
+<li>Hash:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 18173); ?> (ext/hash relies
on implementation-defined malloc alignment).</li>
+</ul></li>
+<li>Intl:
+<ul>
+ <li>Fixed Locale::lookup() and locale_lookup() to return NULL instead of the
fallback locale when a language tag cannot be canonicalized.</li>
+ <li>Fixed memory leaks when calling Collator::__construct() or
Spoofchecker::__construct() twice.</li>
+ <li>Fixed IntlChar methods leaving stale global error state after successful
calls.</li>
+</ul></li>
+<li>ODBC:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22668); ?> (Heap buffer
over-read when a column value exceeds the driver-reported display size).</li>
+</ul></li>
+<li>OpenSSL:
+<ul>
+ <li>Fixed timeout for supplemental read at end of a blocking stream in SSL
stream wrapper.</li>
+</ul></li>
+<li>PDO_ODBC:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 20726); ?> (Crash with ODBC
connection pooling when the DSN carries no credentials).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22667); ?> (Heap buffer
over-read when a column value exceeds the driver-reported display size).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22666); ?> (Heap buffer
overflow when an output parameter value is longer than the declared
maxlen).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22665); ?> (Out-of-bounds
write when the ODBC driver reports a diagnostic message length beyond the error
buffer).</li>
+</ul></li>
+<li>PGSQL:
+<ul>
+ <li>Fixed <?php githubsecurityl('php/php-src', '7qpv-r5mr-78m4'); ?> (SQL
injection via E'...' backslash breakout). (CVE-2026-17543)</li>
+</ul></li>
+<li>Phar:
+<ul>
+ <li>Fixed inconsistent handling of the magic ".phar" directory. Paths such
as "/.phar" remain protected, while non-magic paths that merely start with
".phar" are handled consistently across file and directory creation, copying,
ArrayAccess, stream lookup, directory iteration and extraction.</li>
+ <li>Fixed <?php githubsecurityl('php/php-src', 'vc5h-9ppw-p5f3'); ?> (Crash
via recursive symlinks). (CVE-2026-7260)</li>
+</ul></li>
+<li>PHPDBG:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 17387); ?> (Trivial crash in
phpdbg lexer).</li>
+ <li>Fixed fleaked lowercased lookup keys in phpdbg_resolve_opline_break.</li>
+ <li>Fixed off-by-one in phpdbg_safe_class_lookup() causing class lookups to
always fail during phpdbg's signal-safe interruption path.</li>
+</ul></li>
+<li>Reflection:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22324); ?> (Ignore leading
namespace separator in ReflectionParameter::__construct()).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22441); ?>
(ReflectionClass::hasProperty() and getProperty() ignore dynamic properties
shadowing a private parent property).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22658); ?>
(ReflectionConstant::__toString() with a string value with null bytes truncates
output).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22681); ?>
(Reflection*::__toString() truncates on null bytes).</li>
+</ul></li>
+<li>Session:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 21314); ?> (Different
session garbage collector behavior between PHP 8.3 and PHP 8.5).</li>
+</ul></li>
+<li>SPL:
+<ul>
+ <li>Fix class_parents for classes with leading slash in non-autoload
mode.</li>
+ <li>Ignore leading back-slash in class_parents(), class_implements(), and
class_uses().</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 16217); ?>
(SplFileObject::fputcsv() on an uninitialized object segfaults).</li>
+</ul></li>
+<li>Standard:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22360); ?>
(convert.base64-encode corruption on incremental flush).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22395); ?> (base_convert()
outputs at most 64 characters).</li>
+ <li>Fixed integer overflow in getimagesize() and getimagesizefromstring()
when parsing an IFF chunk with a size of INT_MAX.</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22678); ?> (Use-after-free
in array_multisort() when the comparator mutates the array being sorted).</li>
+</ul></li>
+<li>Streams:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22617); ?> (persistent
stream keys truncated at null bytes, causing distinct abstract unix domain
sockets to share a resource).</li>
+</ul></li>
+<li>Zip:
+<ul>
+ <li>Fixed bug <?php githubissuel('php/php-src', 22649); ?>
(ZipArchive::setCommentName() and setCommentIndex() could crash after
overwriting an entry and resetting its inherited unchanged comment).</li>
+ <li>Fixed bug <?php githubissuel('php/php-src', 21705); ?>
(ZipArchive::getFromIndex() ignores ZipArchive::FL_UNCHANGED for deleted
entries).</li>
+</ul></li>
+</ul>
+<!-- }}} --></section>
+
+
+
<section class="version" id="8.4.23"><!-- {{{ 8.4.23 -->
<h3>Version 8.4.23</h3>
<b><?php release_date('03-Jul-2026'); ?></b>
diff --git a/archive/archive.xml b/archive/archive.xml
index c1c27837bc..68b70ac5b9 100644
--- a/archive/archive.xml
+++ b/archive/archive.xml
@@ -9,6 +9,7 @@
<uri>http://php.net/contact</uri>
<email>[email protected]</email>
</author>
+ <xi:include href="entries/2026-07-30-5.xml"/>
<xi:include href="entries/2026-07-30-4.xml"/>
<xi:include href="entries/2026-07-30-3.xml"/>
<xi:include href="entries/2026-07-30-2.xml"/>
diff --git a/archive/entries/2026-07-30-5.xml b/archive/entries/2026-07-30-5.xml
new file mode 100644
index 0000000000..5d571ac51e
--- /dev/null
+++ b/archive/entries/2026-07-30-5.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<entry xmlns="http://www.w3.org/2005/Atom">
+ <title>PHP 8.4.24 Released!</title>
+ <id>https://www.php.net/archive/2026.php#2026-07-30-5</id>
+ <published>2026-07-30T14:55:16+00:00</published>
+ <updated>2026-07-30T14:55:16+00:00</updated>
+ <link href="https://www.php.net/index.php#2026-07-30-5" rel="alternate"
type="text/html"/>
+ <link href="https://www.php.net/archive/2026.php#2026-07-30-5" 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"><p>The PHP development team
announces the immediate availability of PHP 8.4.24. This is a security
release.</p>
+
+<p>All PHP 8.4 users are encouraged to upgrade to this version.</p>
+
+<p>For source downloads of PHP 8.4.24 please visit our <a
href="https://www.php.net/downloads.php">downloads page</a>,
+Windows source and binaries can also be found <a
href="https://www.php.net/downloads.php?os=windows&version=8.4">there</a>.
+The list of changes is recorded in the <a
href="https://www.php.net/ChangeLog-8.php#8.4.24">ChangeLog</a>.
+</p> </div>
+ </content>
+</entry>
diff --git a/include/release-qa.php b/include/release-qa.php
index 959d00fa11..59f16e0f08 100644
--- a/include/release-qa.php
+++ b/include/release-qa.php
@@ -75,12 +75,12 @@
'active' => true,
'release' => [
'type' => 'RC',
- 'number' => 1,
- 'sha256_bz2' =>
'69884d0668993a12b161882576295708de46a2f6b56374a1b161c94afe652d7e',
- 'sha256_gz' =>
'0cc5b8c97adbd854222695f3e45667d3b2dd3b9fa1d0f4c9cb0c965a0e291d48',
- 'sha256_xz' =>
'39fcc5625ca453232cc46601029ed48b09efe9ea5c76575f365027fbd7b72e8b',
+ 'number' => 0,
+ 'sha256_bz2' => '',
+ 'sha256_gz' => '',
+ 'sha256_xz' => '',
'date' => '16 July 2026',
- 'baseurl' => 'https://downloads.php.net/~saki/',
+ 'baseurl' => 'https://downloads.php.net/',
],
],
diff --git a/include/releases.inc b/include/releases.inc
index 518db784ce..11149c0341 100644
--- a/include/releases.inc
+++ b/include/releases.inc
@@ -2,6 +2,43 @@
$OLDRELEASES = array (
8 =>
array (
+ '8.4.23' =>
+ array (
+ 'announcement' =>
+ array (
+ 'English' => '/releases/8_4_23.php',
+ ),
+ 'tags' =>
+ array (
+ 0 => 'security',
+ ),
+ 'date' => '02 Jul 2026',
+ 'source' =>
+ array (
+ 0 =>
+ array (
+ 'filename' => 'php-8.4.23.tar.gz',
+ 'name' => 'PHP 8.4.23 (tar.gz)',
+ 'sha256' =>
'f43b69572cabfb91c023356f3ce197c782d8a255bc084c1a6af58c0e86cf7573',
+ 'date' => '02 Jul 2026',
+ ),
+ 1 =>
+ array (
+ 'filename' => 'php-8.4.23.tar.bz2',
+ 'name' => 'PHP 8.4.23 (tar.bz2)',
+ 'sha256' =>
'c142c063b10cff68d072766e3ffbfb3654a089b938668b0830356437ee95e0fa',
+ 'date' => '02 Jul 2026',
+ ),
+ 2 =>
+ array (
+ 'filename' => 'php-8.4.23.tar.xz',
+ 'name' => 'PHP 8.4.23 (tar.xz)',
+ 'sha256' =>
'1ab9f52008414e43bb2427ffa288eff2a4de39e1a830f957e800ba368d887a72',
+ 'date' => '02 Jul 2026',
+ ),
+ ),
+ 'museum' => false,
+ ),
'8.3.32' =>
array (
'announcement' =>
diff --git a/include/version.inc b/include/version.inc
index a1e34c7d6f..d7f0acd87a 100644
--- a/include/version.inc
+++ b/include/version.inc
@@ -34,13 +34,13 @@ $RELEASES = (function () {
/* PHP 8.4 Release */
$data['8.4'] = [
- 'version' => '8.4.23',
- 'date' => '02 Jul 2026',
+ 'version' => '8.4.24',
+ 'date' => '30 Jul 2026',
'tags' => ['security'], // Set to ['security'] for security releases.
'sha256' => [
- 'tar.gz' =>
'f43b69572cabfb91c023356f3ce197c782d8a255bc084c1a6af58c0e86cf7573',
- 'tar.bz2' =>
'c142c063b10cff68d072766e3ffbfb3654a089b938668b0830356437ee95e0fa',
- 'tar.xz' =>
'1ab9f52008414e43bb2427ffa288eff2a4de39e1a830f957e800ba368d887a72',
+ 'tar.gz' =>
'd5fe6a1d7633e70645dc757461eeb7b764ff6a04d0487f076dd56f1f9d8059db',
+ 'tar.bz2' =>
'286890447588510df110ede9e9ce09f1eb4f9856630b47fdc40ece70e20373cf',
+ 'tar.xz' =>
'e127be09a8506f4327c5cfa78a614b00d210714484ec215ce0011b4a03c00731',
]
];
diff --git a/releases/8_4_24.php b/releases/8_4_24.php
new file mode 100644
index 0000000000..3d0890e713
--- /dev/null
+++ b/releases/8_4_24.php
@@ -0,0 +1,16 @@
+<?php
+$_SERVER['BASE_PAGE'] = 'releases/8_4_24.php';
+include_once __DIR__ . '/../include/prepend.inc';
+site_header('PHP 8.4.24 Release Announcement', ['cache' => true,
'cache_control' => 30 * 60]);
+?>
+<h1>PHP 8.4.24 Release Announcement</h1>
+
+<p>The PHP development team announces the immediate availability of PHP
8.4.24. This is a security release.</p>
+
+<p>All PHP 8.4 users are encouraged to upgrade to this version.</p>
+
+<p>For source downloads of PHP 8.4.24 please visit our <a
href="https://www.php.net/downloads.php">downloads page</a>,
+Windows source and binaries can also be found <a
href="https://www.php.net/downloads.php?os=windows&version=8.4">there</a>.
+The list of changes is recorded in the <a
href="https://www.php.net/ChangeLog-8.php#8.4.24">ChangeLog</a>.
+</p>
+<?php site_footer();