Skip to content

Commit 1478ba2

Browse files
committed
Announce PHP 8.4.21
1 parent 738cffd commit 1478ba2

7 files changed

Lines changed: 190 additions & 12 deletions

File tree

ChangeLog-8.php

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,110 @@
877877

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

880+
<section class="version" id="8.4.21"><!-- {{{ 8.4.21 -->
881+
<h3>Version 8.4.21</h3>
882+
<b><?php release_date('07-May-2026'); ?></b>
883+
<ul><li>Core:
884+
<ul>
885+
<li>Fixed bug <?php githubissuel('php/php-src', 19983); ?> (GC assertion failure with fibers, generators and destructors).</li>
886+
<li>Fixed bug <?php githubissuel('php/php-src', 21478); ?> (Forward property operations to real instance for initialized lazy proxies).</li>
887+
<li>Fixed bug <?php githubissuel('php/php-src', 21605); ?> (Missing addref for Countable::count()).</li>
888+
<li>Fixed bug <?php githubissuel('php/php-src', 21699); ?> (Assertion failure in shutdown_executor when resolving self::/parent::/static:: callables if the error handler throws).</li>
889+
<li>Fixed bug <?php githubissuel('php/php-src', 21603); ?> (Missing addref for __unset).</li>
890+
<li>Fixed bug <?php githubissuel('php/php-src', 21760); ?> (Trait with class constant name conflict against enum case causes SEGV).</li>
891+
</ul></li>
892+
<li>CLI:
893+
<ul>
894+
<li>Fixed bug <?php githubissuel('php/php-src', 21754); ?> (`--rf` command line option with a method triggers ext/reflection deprecation warnings).</li>
895+
</ul></li>
896+
<li>Curl:
897+
<ul>
898+
<li>Add support for brotli and zstd on Windows.</li>
899+
</ul></li>
900+
<li>DOM:
901+
<ul>
902+
<li>Fixed <?php githubsecurityl('php/php-src', '4jhr-8w89-j733'); ?> and <?php githubissuel('php/php-src', 21566); ?> (Dom\XMLDocument::C14N() emits duplicate xmlns declarations after setAttributeNS()). (CVE-2026-7263)</li>
903+
<li>Fixed bug <?php githubissuel('php/php-src', 21688); ?> (segmentation fault on empty HTMLDocument).</li>
904+
<li>Upgrade to lexbor v2.7.0.</li>
905+
</ul></li>
906+
<li>FPM:
907+
<ul>
908+
<li>Fixed <?php githubsecurityl('php/php-src', '7qg2-v9fj-4mwv'); ?> (XSS within status endpoint). (CVE-2026-6735)</li>
909+
</ul></li>
910+
<li>Iconv:
911+
<ul>
912+
<li>Fixed bug <?php githubissuel('php/php-src', 17399); ?> (iconv memory leak on bailout).</li>
913+
</ul></li>
914+
<li>MBString:
915+
<ul>
916+
<li>Fixed <?php githubsecurityl('php/php-src', 'wm6j-2649-pv75'); ?> (Null pointer dereference in php_mb_check_encoding() via mb_ereg_search_init()). (CVE-2026-7259)</li>
917+
<li>Fixed <?php githubsecurityl('php/php-src', '74r9-qxhc-fx53'); ?> (Out-of-bounds access in mbfl_name2encoding_ex()). (CVE-2026-6104)</li>
918+
</ul></li>
919+
<li>Opcache:
920+
<ul>
921+
<li>Fixed bug <?php githubissuel('php/php-src', 21158); ?> (JIT: Assertion jit-&gt;ra[var].flags &amp; (1&lt;&lt;0) failed in zend_jit_use_reg).</li>
922+
<li>Fixed bug <?php githubissuel('php/php-src', 21593); ?> (Borked function JIT JMPNZ smart branch).</li>
923+
<li>Fixed bug <?php githubissuel('php/php-src', 21460); ?> (COND optimization regression).</li>
924+
<li>Fixed faulty returns out of zend_try block in zend_jit_trace().</li>
925+
</ul></li>
926+
<li>OpenSSL:
927+
<ul>
928+
<li>Fix a bunch of memory leaks and crashes on edge cases.</li>
929+
</ul></li>
930+
<li>PDO_Firebird:
931+
<ul>
932+
<li>Fixed <?php githubsecurityl('php/php-src', 'w476-322c-wpvm'); ?> (SQL injection via NUL bytes in quoted strings). (CVE-2025-14179)</li>
933+
</ul></li>
934+
<li>Phar:
935+
<ul>
936+
<li>Restore is_link handler in phar_intercept_functions_shutdown.</li>
937+
<li>Fixed bug <?php githubissuel('php/php-src', 21797); ?> (phar: NULL dereference in Phar::webPhar() when SCRIPT_NAME is absent from SAPI environment).</li>
938+
<li>Fix memory leak in Phar::offsetGet().</li>
939+
<li>Fix memory leak in phar_add_file().</li>
940+
<li>Fixed bug <?php githubissuel('php/php-src', 21799); ?> (phar: propagate phar_stream_flush return value from phar_stream_close).</li>
941+
<li>Fix memory leak in phar_verify_signature() when md_ctx is invalid.</li>
942+
</ul></li>
943+
<li>Random:
944+
<ul>
945+
<li>Fixed bug <?php githubissuel('php/php-src', 21731); ?> (Random\Engine\Xoshiro256StarStar::__unserialize() accepts all-zero state).</li>
946+
</ul></li>
947+
<li>Session:
948+
<ul>
949+
<li>Fixed memory leak when session GC callback return a refcounted value.</li>
950+
</ul></li>
951+
<li>SOAP:
952+
<ul>
953+
<li>Fixed <?php githubsecurityl('php/php-src', '85c2-q967-79q5'); ?> (Stale SOAP_GLOBAL(ref_map) pointer with Apache Map). (CVE-2026-6722)</li>
954+
<li>Fixed <?php githubsecurityl('php/php-src', 'm33r-qmcv-p97q'); ?> (Use-after-free after header parsing failure with SOAP_PERSISTENCE_SESSION). (CVE-2026-7261)</li>
955+
<li>Fixed <?php githubsecurityl('php/php-src', 'hmxp-6pc4-f3vv'); ?> (Broken Apache map value NULL check). (CVE-2026-7262)</li>
956+
</ul></li>
957+
<li>SPL:
958+
<ul>
959+
<li>Fixed bug <?php githubissuel('php/php-src', 21499); ?> (RecursiveArrayIterator getChildren UAF after parent free).</li>
960+
<li>Fix concurrent iteration and deletion issues in SplObjectStorage.</li>
961+
</ul></li>
962+
<li>Standard:
963+
<ul>
964+
<li>Fixed <?php githubsecurityl('php/php-src', '96wq-48vp-hh57'); ?> (Signed integer overflow of char array offset). (CVE-2026-7568)</li>
965+
<li>Fixed <?php githubsecurityl('php/php-src', 'm8rr-4c36-8gq4'); ?> (Consistently pass unsigned char to ctype.h functions). (CVE-2026-7258)</li>
966+
</ul></li>
967+
<li>Streams:
968+
<ul>
969+
<li>Fixed bug <?php githubissuel('php/php-src', 21468); ?> (Segfault in file_get_contents w/ a https URL and a proxy set).</li>
970+
</ul></li>
971+
<li>XSL:
972+
<ul>
973+
<li>Fixed bug <?php githubissuel('php/php-src', 21600); ?> (Segfault on module shutdown).</li>
974+
</ul></li>
975+
<li>Zip:
976+
<ul>
977+
<li>Fixed bug <?php githubissuel('php/php-src', 21698); ?> (memory leak with ZipArchive::addGlob() early return statements).</li>
978+
</ul></li>
979+
</ul>
980+
<!-- }}} --></section>
981+
982+
983+
880984
<section class="version" id="8.4.20"><!-- {{{ 8.4.20 -->
881985
<h3>Version 8.4.20</h3>
882986
<b><?php release_date('09-Apr-2026'); ?></b>

archive/archive.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<uri>http://php.net/contact</uri>
1010
<email>php-webmaster@lists.php.net</email>
1111
</author>
12+
<xi:include href="entries/2026-05-07-2.xml"/>
1213
<xi:include href="entries/2026-05-07-1.xml"/>
1314
<xi:include href="entries/2026-05-04-1.xml"/>
1415
<xi:include href="entries/2026-04-09-2.xml"/>

archive/entries/2026-05-07-2.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<entry xmlns="http://www.w3.org/2005/Atom">
3+
<title>PHP 8.4.21 Released!</title>
4+
<id>https://www.php.net/archive/2026.php#2026-05-07-2</id>
5+
<published>2026-05-07T15:34:42+00:00</published>
6+
<updated>2026-05-07T15:34:42+00:00</updated>
7+
<link href="https://www.php.net/index.php#2026-05-07-2" rel="alternate" type="text/html"/>
8+
<link href="https://www.php.net/archive/2026.php#2026-05-07-2" rel="via" type="text/html"/>
9+
<category term="releases" label="New PHP release"/>
10+
<category term="frontpage" label="PHP.net frontpage news"/>
11+
<content type="xhtml">
12+
<div xmlns="http://www.w3.org/1999/xhtml"><p>The PHP development team announces the immediate availability of PHP 8.4.21. This is a security release.</p>
13+
14+
<p>All PHP 8.4 users are encouraged to upgrade to this version.</p>
15+
16+
<p>For source downloads of PHP 8.4.21 please visit our <a href="https://www.php.net/downloads.php">downloads page</a>,
17+
Windows source and binaries can also be found <a href="https://www.php.net/downloads.php?os=windows&amp;version=8.4">there</a>.
18+
The list of changes is recorded in the <a href="https://www.php.net/ChangeLog-8.php#8.4.21">ChangeLog</a>.
19+
</p> </div>
20+
</content>
21+
</entry>

include/release-qa.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,12 @@
7575
'active' => true,
7676
'release' => [
7777
'type' => 'RC',
78-
'number' => 1,
79-
'sha256_bz2' => '92be1ab180946fb6fe21456cfae08190fe556fb643d56043bd56f034ae145368',
80-
'sha256_gz' => 'e4c3eb09b3948bda0a0e41c73424a73c1d3ca6c7ee81efb22f26f07cb7476929',
81-
'sha256_xz' => 'c1a77cbbfe2dc7dd37b11f88ff68f112dbed6eaa9ba2d232e0a1b57852c93096',
82-
'date' => '23 Apr 2026',
83-
'baseurl' => 'https://downloads.php.net/~calvinb/',
78+
'number' => 0,
79+
'sha256_bz2' => '',
80+
'sha256_gz' => '',
81+
'sha256_xz' => '',
82+
'date' => '07 May 2026',
83+
'baseurl' => 'https://downloads.php.net/',
8484
],
8585
],
8686

include/releases.inc

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,42 @@
22
$OLDRELEASES = array (
33
8 =>
44
array (
5+
'8.4.20' =>
6+
array (
7+
'announcement' =>
8+
array (
9+
'English' => '/releases/8_4_20.php',
10+
),
11+
'tags' =>
12+
array (
13+
),
14+
'date' => '09 Apr 2026',
15+
'source' =>
16+
array (
17+
0 =>
18+
array (
19+
'filename' => 'php-8.4.20.tar.gz',
20+
'name' => 'PHP 8.4.20 (tar.gz)',
21+
'sha256' => 'a2def5d534d57c6a0236f2265de7537608af871900a4f7955eff463e9e38247d',
22+
'date' => '09 Apr 2026',
23+
),
24+
1 =>
25+
array (
26+
'filename' => 'php-8.4.20.tar.bz2',
27+
'name' => 'PHP 8.4.20 (tar.bz2)',
28+
'sha256' => 'ce25d2610a5f9522ac8f53fbb7b8280b5c021991e9bd9137068c9c629d9ffb56',
29+
'date' => '09 Apr 2026',
30+
),
31+
2 =>
32+
array (
33+
'filename' => 'php-8.4.20.tar.xz',
34+
'name' => 'PHP 8.4.20 (tar.xz)',
35+
'sha256' => 'e454c6f7c89a42f41ebb06dc5c3578e8c8b5f1a3f0da6675665affab04e221f7',
36+
'date' => '09 Apr 2026',
37+
),
38+
),
39+
'museum' => false,
40+
),
541
'8.3.30' =>
642
array (
743
'announcement' =>

include/version.inc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ $RELEASES = (function () {
3434

3535
/* PHP 8.4 Release */
3636
$data['8.4'] = [
37-
'version' => '8.4.20',
38-
'date' => '09 Apr 2026',
39-
'tags' => [], // Set to ['security'] for security releases.
37+
'version' => '8.4.21',
38+
'date' => '07 May 2026',
39+
'tags' => ['security'], // Set to ['security'] for security releases.
4040
'sha256' => [
41-
'tar.gz' => 'a2def5d534d57c6a0236f2265de7537608af871900a4f7955eff463e9e38247d',
42-
'tar.bz2' => 'ce25d2610a5f9522ac8f53fbb7b8280b5c021991e9bd9137068c9c629d9ffb56',
43-
'tar.xz' => 'e454c6f7c89a42f41ebb06dc5c3578e8c8b5f1a3f0da6675665affab04e221f7',
41+
'tar.gz' => 'db96ee0a8e5ee7b73a4913a2aeddc162ba2ef16cd34b9347b5b9a6150e1f8e48',
42+
'tar.bz2' => '5e0bd287f3be35bf57c211b010527ae5e10a88170f96e64d336044eb5faef430',
43+
'tar.xz' => '7cf5d8ab12c3b2016875bcfaec71bef1ef0b07bed6148f2c447577074431f984',
4444
]
4545
];
4646

releases/8_4_21.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
$_SERVER['BASE_PAGE'] = 'releases/8_4_21.php';
3+
include_once __DIR__ . '/../include/prepend.inc';
4+
site_header('PHP 8.4.21 Release Announcement');
5+
?>
6+
<h1>PHP 8.4.21 Release Announcement</h1>
7+
8+
<p>The PHP development team announces the immediate availability of PHP 8.4.21. This is a security release.</p>
9+
10+
<p>All PHP 8.4 users are encouraged to upgrade to this version.</p>
11+
12+
<p>For source downloads of PHP 8.4.21 please visit our <a href="https://www.php.net/downloads.php">downloads page</a>,
13+
Windows source and binaries can also be found <a href="https://www.php.net/downloads.php?os=windows&amp;version=8.4">there</a>.
14+
The list of changes is recorded in the <a href="https://www.php.net/ChangeLog-8.php#8.4.21">ChangeLog</a>.
15+
</p>
16+
<?php site_footer();

0 commit comments

Comments
 (0)