Author: Volker Dusch (edorian)
Date: 2026-07-30T13:50:11+02:00

Commit: 
https://github.com/php/web-php/commit/35d7d39b90eadb21f8c9072e9b7ddf2c18d7e6cc
Raw diff: 
https://github.com/php/web-php/commit/35d7d39b90eadb21f8c9072e9b7ddf2c18d7e6cc.diff

Announce PHP 8.5.9

Changed paths:
  A  archive/entries/2026-07-30-2.xml
  A  releases/8_5_9.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 d5d830fffe..0f2a3ca77f 100644
--- a/ChangeLog-8.php
+++ b/ChangeLog-8.php
@@ -9,6 +9,133 @@
 
 <a id="PHP_8_5"></a>
 
+<section class="version" id="8.5.9"><!-- {{{ 8.5.9 -->
+<h3>Version 8.5.9</h3>
+<b><?php release_date('30-Jul-2026'); ?></b>
+<ul><li>Core:
+<ul>
+  <li>Fixed bug <?php githubissuel('php/php-src', 22290); ?> (AST pretty 
printing does not correctly handle strings containing NUL).</li>
+  <li>Fixed bug <?php githubissuel('php/php-src', 22206); ?> (missing return 
in global register detection).</li>
+  <li>Lock unmodified readonly properties for modification after 
clone-with.</li>
+</ul></li>
+<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>
+  <li>Fixed getElementsByClassName() item() returning the wrong element on 
random access.</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>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>Opcache:
+<ul>
+  <li>Fixed bug <?php githubissuel('php/php-src', 22158); ?> (Tracing JIT 
dispatches the observer begin handler through the wrong run_time_cache slot on 
megamorphic calls).</li>
+  <li>Fixed bug <?php githubissuel('php/php-src', 22443); ?> (Tracing JIT 
SIGSEGV on megamorphic dynamic calls from an undereferenced run_time_cache 
map_ptr offset).</li>
+  <li>Fixed bug <?php githubissuel('php/php-src', 21770); ?> (Infinite 
recursion in property hook getter in opcache preloaded trait).</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>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 memory leak when calling IntlListFormatter::__construct() 
twice.</li>
+  <li>Fixed IntlChar methods leaving stale global error state after successful 
calls.</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', 22683); ?> 
(Reflection(Class)Constant::__toString() should not warn on NAN 
conversions).</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', 22395); ?> (base_convert() 
outputs at most 64 characters).</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>URI:
+<ul>
+  <li>Fixed behavior of Uri\WhatWg\Url wither methods with regards to empty 
opaque hosts.</li>
+  <li>Fixed bug <?php githubissuel('php/php-src', 22628); ?> (Percent-encoding 
of caret in WHATWG URL paths is not performed).</li>
+  <li>Fixed bug <?php githubissuel('php/php-src', 22629); ?> (WHATWG 
Validation error incorrect with empty host and non-empty userinfo).</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.5.8"><!-- {{{ 8.5.8 -->
 <h3>Version 8.5.8</h3>
 <b><?php release_date('02-Jul-2026'); ?></b>
diff --git a/archive/archive.xml b/archive/archive.xml
index d086a6e346..dfcd9ebaaa 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-2.xml"/>
   <xi:include href="entries/2026-07-30-1.xml"/>
   <xi:include href="entries/2026-07-16-1.xml"/>
   <xi:include href="entries/2026-07-13-1.xml"/>
diff --git a/archive/entries/2026-07-30-2.xml b/archive/entries/2026-07-30-2.xml
new file mode 100644
index 0000000000..3c57d3c74d
--- /dev/null
+++ b/archive/entries/2026-07-30-2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<entry xmlns="http://www.w3.org/2005/Atom";>
+  <title>PHP 8.5.9 Released!</title>
+  <id>https://www.php.net/archive/2026.php#2026-07-30-2</id>
+  <published>2026-07-30T11:38:53+00:00</published>
+  <updated>2026-07-30T11:38:53+00:00</updated>
+  <link href="https://www.php.net/index.php#2026-07-30-2"; rel="alternate" 
type="text/html"/>
+  <link href="https://www.php.net/archive/2026.php#2026-07-30-2"; 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.5.9. This is a security 
release.</p>
+
+<p>All PHP 8.5 users are encouraged to upgrade to this version.</p>
+
+<p>For source downloads of PHP 8.5.9 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&amp;version=8.5";>there</a>.
+The list of changes is recorded in the <a 
href="https://www.php.net/ChangeLog-8.php#8.5.9";>ChangeLog</a>.
+</p>    </div>
+  </content>
+</entry>
diff --git a/include/release-qa.php b/include/release-qa.php
index ce44a7f7bd..35e5f8a450 100644
--- a/include/release-qa.php
+++ b/include/release-qa.php
@@ -88,10 +88,10 @@
         'active'  => true,
         'release' => [
             'type'       => 'RC',
-            'number'     => 1,
-            'sha256_bz2' => 
'ce761a2347e2bd6bb9aab5a63d78a2e978df10665619632a8f903b1df3af9420',
-            'sha256_gz'  => 
'eaeb7fc128cdce1ee4a16575f55e318a51554295b530dd914a03d08abc9023a3',
-            'sha256_xz'  => 
'3c4de9f98adda67400e2b52252f5d1c58328d26da64e3cdc8b3a6a3e5d49397b',
+            'number'     => 0,
+            'sha256_bz2' => '',
+            'sha256_gz'  => '',
+            'sha256_xz'  => '',
             'date'       => '16 July 2026',
             'baseurl'    => 'https://downloads.php.net/~edorian/',
         ],
diff --git a/include/releases.inc b/include/releases.inc
index 62f3513d94..858db068b1 100644
--- a/include/releases.inc
+++ b/include/releases.inc
@@ -2,6 +2,43 @@
 $OLDRELEASES = array (
   8 => 
   array (
+    '8.5.8' => 
+    array (
+      'announcement' => 
+      array (
+        'English' => '/releases/8_5_8.php',
+      ),
+      'tags' => 
+      array (
+        0 => 'security',
+      ),
+      'date' => '02 Jul 2026',
+      'source' => 
+      array (
+        0 => 
+        array (
+          'filename' => 'php-8.5.8.tar.gz',
+          'name' => 'PHP 8.5.8 (tar.gz)',
+          'sha256' => 
'6ebc55e52af4396385e689f7af0f28944fbbf966843433b573e9dc1dc03df539',
+          'date' => '02 Jul 2026',
+        ),
+        1 => 
+        array (
+          'filename' => 'php-8.5.8.tar.bz2',
+          'name' => 'PHP 8.5.8 (tar.bz2)',
+          'sha256' => 
'22f938efc6c4eaa8bf2e40ae11466140309496aa5d5a19204272fb2596fd11dd',
+          'date' => '02 Jul 2026',
+        ),
+        2 => 
+        array (
+          'filename' => 'php-8.5.8.tar.xz',
+          'name' => 'PHP 8.5.8 (tar.xz)',
+          'sha256' => 
'58910198d19e873048fe87cdfe16bc790025417ede3d1651bfa1c4b533d573f2',
+          'date' => '02 Jul 2026',
+        ),
+      ),
+      'museum' => false,
+    ),
     '8.2.32' => 
     array (
       'announcement' => 
diff --git a/include/version.inc b/include/version.inc
index 3e1cf68edd..38e3f36e9f 100644
--- a/include/version.inc
+++ b/include/version.inc
@@ -20,15 +20,15 @@ $RELEASES = (function () {
 
     /* PHP 8.5 Release */
     $data['8.5'] = [
-        'version' => '8.5.8',
-        'date' => '02 Jul 2026',
+        'version' => '8.5.9',
+        'date' => '30 Jul 2026',
         'tags' => ['security'], // Set to ['security'] for security releases.
         'sha256' => [
             // WARNING: Order of SHA256 entries here is DIFFERENT from the
             // order in the manifest
-            'tar.gz' => 
'6ebc55e52af4396385e689f7af0f28944fbbf966843433b573e9dc1dc03df539',
-            'tar.bz2' => 
'22f938efc6c4eaa8bf2e40ae11466140309496aa5d5a19204272fb2596fd11dd',
-            'tar.xz' => 
'58910198d19e873048fe87cdfe16bc790025417ede3d1651bfa1c4b533d573f2',
+            'tar.gz' => 
'd735459c2cbaeb0673d416c33d372d9ff261d562f6b29da48f3e6aeaeca083af',
+            'tar.bz2' => 
'703c082ad9d2946ac647f3596812300d2c62b360d2f31a999021692a9b39476c',
+            'tar.xz' => 
'0db7855f25bcd0ab1d592cdb35e284d6f6a5d2ae0f6f621122e364cc39b708f4',
         ]
     ];
 
diff --git a/releases/8_5_9.php b/releases/8_5_9.php
new file mode 100644
index 0000000000..854553c793
--- /dev/null
+++ b/releases/8_5_9.php
@@ -0,0 +1,16 @@
+<?php
+$_SERVER['BASE_PAGE'] = 'releases/8_5_9.php';
+include_once __DIR__ . '/../include/prepend.inc';
+site_header('PHP 8.5.9 Release Announcement');
+?>
+<h1>PHP 8.5.9 Release Announcement</h1>
+
+<p>The PHP development team announces the immediate availability of PHP 8.5.9. 
This is a security release.</p>
+
+<p>All PHP 8.5 users are encouraged to upgrade to this version.</p>
+
+<p>For source downloads of PHP 8.5.9 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&amp;version=8.5";>there</a>.
+The list of changes is recorded in the <a 
href="https://www.php.net/ChangeLog-8.php#8.5.9";>ChangeLog</a>.
+</p>
+<?php site_footer();

Reply via email to