Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e585034
Fix GH-21699: callable resolution must fail if error handler threw du…
macoaure Apr 13, 2026
d64eb79
Fix-up NEWS
Girgias Apr 13, 2026
c85ea3c
Merge branch 'PHP-8.4' into PHP-8.5
Girgias Apr 13, 2026
0d30d82
Merge branch 'PHP-8.5'
Girgias Apr 13, 2026
08dad09
Fix GH-8561, GH-8562, GH-8563, GH-8564: SplFileObject iterator desync…
iliaal Apr 13, 2026
159b4ee
Add NEWS entry for SplFileObject iterator fixes
Girgias Apr 13, 2026
d0167e7
ext/snmp: rename argument and variables to be more consistent and inf…
prateekbhujel Apr 13, 2026
d1670fb
Add date.timezone=UTC to the INI overwrites in run-tests.php
hakre Apr 11, 2026
d341eb7
Merge branch 'PHP-8.4' into PHP-8.5
iluuu1994 Apr 13, 2026
b34d906
Merge branch 'PHP-8.5'
iluuu1994 Apr 13, 2026
91b0aeb
Remove charsets plugin (#21714)
kamil-tekiela Apr 13, 2026
9b6f83e
ext/pdo_odbc: Require non-empty string when building string buffer (#…
NattyNarwhal Apr 13, 2026
c9cc472
Merge branch 'PHP-8.4' into PHP-8.5
NattyNarwhal Apr 13, 2026
7136751
Merge branch 'PHP-8.5'
NattyNarwhal Apr 13, 2026
9d30bd5
Finish deprecation of $row < 1 (#21053)
NattyNarwhal Apr 13, 2026
72c12ea
Add myself to DOM/XML/SOAP/SimpleXML/XMLReader/Writer and XSL.
devnexen Apr 13, 2026
a82696d
Merge branch 'PHP-8.4' into PHP-8.5
devnexen Apr 13, 2026
1510196
Merge branch 'PHP-8.5'
devnexen Apr 13, 2026
ebb6e4f
Zend/zend_execute.c: add const qualifiers
Girgias Apr 2, 2026
f4db0d0
Zend/zend_execute.c: use zend_never_inline ZEND_COLD
Girgias Apr 6, 2026
933ae15
Zend/zend_execute.c: mark some error functions as static
Girgias Apr 2, 2026
6b159ca
Zend/zend_execute.c: mark error functions as zend_never_inline
Girgias Apr 2, 2026
bc42a87
Zend/zend_execute.c: mark zend_non_static_method_call() as ZEND_COLD …
Girgias Apr 2, 2026
d648cc1
Zend/zend_execute.c: use uint32_t type instead of int type
Girgias Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@
/ext/curl @adoy
/ext/date @derickr
/ext/dba @Girgias
/ext/dom @devnexen
/ext/ffi @dstogov
/ext/gd @devnexen
/ext/gettext @devnexen
/ext/gmp @Girgias
/ext/intl @devnexen
/ext/libxml @devnexen
/ext/json @bukka
/ext/lexbor @kocsismate
/ext/mbstring @alexdowad @youkidearitai
Expand All @@ -45,10 +47,16 @@
/ext/random @TimWolla @zeriyoshi
/ext/reflection @DanielEScherzer
/ext/session @Girgias
/ext/simplexml @devnexen
/ext/soap @devnexen
/ext/sockets @devnexen
/ext/spl @Girgias
/ext/standard @bukka
/ext/uri @kocsismate @TimWolla
/ext/xml @devnexen
/ext/xmlreader @devnexen
/ext/xmlwriter @devnexen
/ext/xsl @devnexen
/main @bukka
/sapi/fpm @bukka
/Zend/Optimizer @dstogov
Expand Down
2 changes: 2 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ PHP NEWS
- SPL:
. DirectoryIterator key can now work better with filesystem supporting larger
directory indexing. (David Carlier)
. Fix bugs GH-8561, GH-8562, GH-8563, and GH-8564 (Fixing various
SplFileObject iterator desync bugs). (iliaal)

- Sqlite3:
. Fix NUL byte truncation in sqlite3 TEXT column handling. (ndossche)
Expand Down
1 change: 1 addition & 0 deletions UPGRADING.INTERNALS
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ PHP 8.6 INTERNALS UPGRADE NOTES
. Dropped session_options parameter from all methods in mysqlnd_auth.
The same information is present in conn->options and should be used
instead.
. Removed charsets plugin.

- ext/session:
. php_session_flush() now returns a bool rather than a zend_result.
Expand Down
7 changes: 6 additions & 1 deletion Zend/tests/gh16799.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ Test::test();
--EXPECTF--
Fatal error: Uncaught Exception: Use of "static" in callables is deprecated in %s:%d
Stack trace:
#0 %s(%d): {closure:%s:%d}(8192, 'Use of "static"...', %s, %d)
#0 %s(%d): {closure:%s}(8192, 'Use of "static"%s', '%s', %d)
#1 %s(%d): Test::test()
#2 {main}

Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d
Stack trace:
#0 %s(%d): Test::test()
#1 {main}
thrown in %s on line %d
31 changes: 31 additions & 0 deletions Zend/tests/gh_21699.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
--TEST--
GH-21699: Assertion failure in shutdown_executor when error handler throws during self:: callable resolution
--FILE--
<?php
set_error_handler(function () {
throw new Exception;
});
class bar {
public static function __callstatic($fusion, $b)
{
}
public function test()
{
call_user_func('self::y');
}
}
$x = new bar;
$x->test();
?>
--EXPECTF--
Fatal error: Uncaught Exception in %s:%d
Stack trace:
#0 %s(%d): {closure:%s}(%d, 'Use of "self" i%s', '%s', %d)
#1 %s(%d): bar->test()
#2 {main}

Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d
Stack trace:
#0 %s(%d): bar->test()
#1 {main}
thrown in %s on line %d
32 changes: 32 additions & 0 deletions Zend/tests/gh_21699_parent.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
--TEST--
GH-21699 (parent::): no shutdown_executor trampoline assertion when error handler throws during parent:: callable resolution
--FILE--
<?php
set_error_handler(function () {
throw new Exception;
});
class Base {
public static function __callStatic($name, $args)
{
}
}
class Child extends Base {
public function test()
{
call_user_func('parent::missing');
}
}
(new Child)->test();
?>
--EXPECTF--
Fatal error: Uncaught Exception in %s:%d
Stack trace:
#0 %s(%d): {closure:%s}(%d, 'Use of "parent"%s', '%s', %d)
#1 %s(%d): Child->test()
#2 {main}

Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d
Stack trace:
#0 %s(%d): Child->test()
#1 {main}
thrown in %s on line %d
31 changes: 31 additions & 0 deletions Zend/tests/gh_21699_static.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
--TEST--
GH-21699 (static::): no shutdown_executor trampoline assertion when error handler throws during static:: callable resolution
--FILE--
<?php
set_error_handler(function () {
throw new Exception;
});
class bar {
public static function __callstatic($fusion, $b)
{
}
public function test()
{
call_user_func('static::y');
}
}
$x = new bar;
$x->test();
?>
--EXPECTF--
Fatal error: Uncaught Exception in %s:%d
Stack trace:
#0 %s(%d): {closure:%s}(%d, 'Use of "static"%s', '%s', %d)
#1 %s(%d): bar->test()
#2 {main}

Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d
Stack trace:
#0 %s(%d): bar->test()
#1 {main}
thrown in %s on line %d
4 changes: 4 additions & 0 deletions Zend/zend_API.c
Original file line number Diff line number Diff line change
Expand Up @@ -3769,6 +3769,10 @@ static bool zend_is_callable_check_class(zend_string *name, zend_class_entry *sc
if (error) zend_spprintf(error, 0, "class \"%.*s\" not found", (int)name_len, ZSTR_VAL(name));
}
ZSTR_ALLOCA_FREE(lcname, use_heap);
/* User error handlers may throw from deprecations above; do not report callable as valid. */
if (UNEXPECTED(EG(exception))) {
return false;
}
return ret;
}
/* }}} */
Expand Down
Loading