Commit 66910ee2b39 for php.net

commit 66910ee2b39c55260aae9f81203abdf2ab8869e7
Author: Jorg Adam Sowa <jorg.sowa@gmail.com>
Date:   Wed Jun 24 12:44:31 2026 +0200

    ext/spl: ignore leading namespace separator in spl_autoload() (#22323)

    Strip a leading "\\" before lowercasing, mirroring zend_lookup_class_ex(),
    so both spellings resolve identically.

diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 24cd66db445..af3b115238b 100644
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -301,7 +301,12 @@ PHP_FUNCTION(spl_autoload)
 		pos_len = (int)ZSTR_LEN(file_exts);
 	}

-	lc_name = zend_string_tolower(class_name);
+	if (ZSTR_VAL(class_name)[0] == '\\') {
+		lc_name = zend_string_alloc(ZSTR_LEN(class_name) - 1, 0);
+		zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(class_name) + 1, ZSTR_LEN(class_name) - 1);
+	} else {
+		lc_name = zend_string_tolower(class_name);
+	}
 	while (pos && *pos && !EG(exception)) {
 		pos1 = strchr(pos, ',');
 		if (pos1) {
diff --git a/ext/spl/tests/spl_autoload_leading_backslash.phpt b/ext/spl/tests/spl_autoload_leading_backslash.phpt
new file mode 100644
index 00000000000..ff8ae3234ee
--- /dev/null
+++ b/ext/spl/tests/spl_autoload_leading_backslash.phpt
@@ -0,0 +1,18 @@
+--TEST--
+spl_autoload(): a leading "\" in the class name is ignored
+--FILE--
+<?php
+
+set_include_path(__DIR__);
+spl_autoload_extensions(".inc");
+
+spl_autoload("DualIterator");
+var_dump(class_exists("DualIterator", false));
+
+spl_autoload("\\RecursiveDualIterator");
+var_dump(class_exists("RecursiveDualIterator", false));
+
+?>
+--EXPECT--
+bool(true)
+bool(true)