From 6e0c37ffadae767d89aa1b14672b33af0ef988cc Mon Sep 17 00:00:00 2001 From: Daniel Scherzer Date: Tue, 11 Aug 2026 14:05:23 -0700 Subject: [PATCH 1/3] PHP-8.5 is now for PHP 8.5.11-dev --- NEWS | 5 ++++- Zend/zend.h | 2 +- configure.ac | 2 +- main/php_version.h | 6 +++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index ac441555e783..c3454aba1a79 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -?? ??? ????, PHP 8.5.10 +?? ??? ????, PHP 8.5.11 + + +27 Aug 2026, PHP 8.5.10 - Core: . Fixed bug GH-22782 (Const expr FCC crashes under preloading). (Arnaud) diff --git a/Zend/zend.h b/Zend/zend.h index 1ae16ee0d6a0..2713e80d7416 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -20,7 +20,7 @@ #ifndef ZEND_H #define ZEND_H -#define ZEND_VERSION "4.5.10-dev" +#define ZEND_VERSION "4.5.11-dev" #define ZEND_ENGINE_3 diff --git a/configure.ac b/configure.ac index b8e19cc167c7..e100afcb6c61 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl Basic autoconf initialization, generation of config.nice. dnl ---------------------------------------------------------------------------- AC_PREREQ([2.68]) -AC_INIT([PHP],[8.5.10-dev],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) +AC_INIT([PHP],[8.5.11-dev],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) AC_CONFIG_SRCDIR([main/php_version.h]) AC_CONFIG_AUX_DIR([build]) AC_PRESERVE_HELP_ORDER diff --git a/main/php_version.h b/main/php_version.h index f3eae43fad45..a97f7b5c4d4b 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -2,7 +2,7 @@ /* edit configure.ac to change version number */ #define PHP_MAJOR_VERSION 8 #define PHP_MINOR_VERSION 5 -#define PHP_RELEASE_VERSION 10 +#define PHP_RELEASE_VERSION 11 #define PHP_EXTRA_VERSION "-dev" -#define PHP_VERSION "8.5.10-dev" -#define PHP_VERSION_ID 80510 +#define PHP_VERSION "8.5.11-dev" +#define PHP_VERSION_ID 80511 From 7db6f5b02199a9e902827163db46c4e87512b80d Mon Sep 17 00:00:00 2001 From: Daniel Scherzer Date: Tue, 11 Aug 2026 15:36:31 -0700 Subject: [PATCH 2/3] Arginfo: add and use known string for "8.6" (#23222) --- Zend/zend_string.h | 1 + build/gen_stub.php | 1 + ext/mbstring/mbstring_arginfo.h | 48 +++++++++----------------- ext/mysqli/mysqli_arginfo.h | 6 ++-- ext/spl/php_spl_arginfo.h | 5 ++- ext/spl/spl_array_arginfo.h | 21 ++++++----- ext/standard/basic_functions_arginfo.h | 16 ++++----- 7 files changed, 40 insertions(+), 58 deletions(-) diff --git a/Zend/zend_string.h b/Zend/zend_string.h index d9efea00e7bd..ad66fe168c8e 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -751,6 +751,7 @@ default: ZEND_UNREACHABLE(); _(ZEND_STR_8_DOT_3, "8.3") \ _(ZEND_STR_8_DOT_4, "8.4") \ _(ZEND_STR_8_DOT_5, "8.5") \ + _(ZEND_STR_8_DOT_6, "8.6") \ typedef enum _zend_known_string_id { diff --git a/build/gen_stub.php b/build/gen_stub.php index b2f38c978cf3..2f81a7642e73 100755 --- a/build/gen_stub.php +++ b/build/gen_stub.php @@ -2978,6 +2978,7 @@ class StringBuilder { private const PHP_86_KNOWN = [ "arguments" => "ZEND_STR_ARGUMENTS", "NoDiscard" => "ZEND_STR_NODISCARD", + '8.6' => 'ZEND_STR_8_DOT_6', ]; /** diff --git a/ext/mbstring/mbstring_arginfo.h b/ext/mbstring/mbstring_arginfo.h index bc9db3d415c1..7426387b3386 100644 --- a/ext/mbstring/mbstring_arginfo.h +++ b/ext/mbstring/mbstring_arginfo.h @@ -450,128 +450,112 @@ static void register_mbstring_symbols(int module_number) #if defined(HAVE_MBREGEX) zend_attribute *attribute_Deprecated_func_mb_regex_encoding_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_regex_encoding", sizeof("mb_regex_encoding") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_regex_encoding_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_regex_encoding_0->args[0].value, attribute_Deprecated_func_mb_regex_encoding_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_regex_encoding_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_regex_encoding_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_regex_encoding_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_regex_encoding_0->args[1].value, attribute_Deprecated_func_mb_regex_encoding_0_arg1_str); attribute_Deprecated_func_mb_regex_encoding_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg", sizeof("mb_ereg") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_0->args[0].value, attribute_Deprecated_func_mb_ereg_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_0->args[1].value, attribute_Deprecated_func_mb_ereg_0_arg1_str); attribute_Deprecated_func_mb_ereg_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_eregi_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_eregi", sizeof("mb_eregi") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_eregi_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_eregi_0->args[0].value, attribute_Deprecated_func_mb_eregi_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_eregi_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_eregi_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_eregi_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_eregi_0->args[1].value, attribute_Deprecated_func_mb_eregi_0_arg1_str); attribute_Deprecated_func_mb_eregi_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_replace_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_replace", sizeof("mb_ereg_replace") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_replace_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_replace_0->args[0].value, attribute_Deprecated_func_mb_ereg_replace_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_replace_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_replace_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_replace_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_replace_0->args[1].value, attribute_Deprecated_func_mb_ereg_replace_0_arg1_str); attribute_Deprecated_func_mb_ereg_replace_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_eregi_replace_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_eregi_replace", sizeof("mb_eregi_replace") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_eregi_replace_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_eregi_replace_0->args[0].value, attribute_Deprecated_func_mb_eregi_replace_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_eregi_replace_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_eregi_replace_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_eregi_replace_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_eregi_replace_0->args[1].value, attribute_Deprecated_func_mb_eregi_replace_0_arg1_str); attribute_Deprecated_func_mb_eregi_replace_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_replace_callback_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_replace_callback", sizeof("mb_ereg_replace_callback") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_replace_callback_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_replace_callback_0->args[0].value, attribute_Deprecated_func_mb_ereg_replace_callback_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_replace_callback_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_replace_callback_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_replace_callback_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_replace_callback_0->args[1].value, attribute_Deprecated_func_mb_ereg_replace_callback_0_arg1_str); attribute_Deprecated_func_mb_ereg_replace_callback_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_split_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_split", sizeof("mb_split") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_split_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_split_0->args[0].value, attribute_Deprecated_func_mb_split_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_split_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_split_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_split_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_split_0->args[1].value, attribute_Deprecated_func_mb_split_0_arg1_str); attribute_Deprecated_func_mb_split_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_match_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_match", sizeof("mb_ereg_match") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_match_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_match_0->args[0].value, attribute_Deprecated_func_mb_ereg_match_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_match_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_match_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_match_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_match_0->args[1].value, attribute_Deprecated_func_mb_ereg_match_0_arg1_str); attribute_Deprecated_func_mb_ereg_match_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_search_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_search", sizeof("mb_ereg_search") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_search_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_0->args[0].value, attribute_Deprecated_func_mb_ereg_search_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_search_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_search_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_0->args[1].value, attribute_Deprecated_func_mb_ereg_search_0_arg1_str); attribute_Deprecated_func_mb_ereg_search_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_search_pos_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_search_pos", sizeof("mb_ereg_search_pos") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_search_pos_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_pos_0->args[0].value, attribute_Deprecated_func_mb_ereg_search_pos_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_pos_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_search_pos_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_search_pos_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_pos_0->args[1].value, attribute_Deprecated_func_mb_ereg_search_pos_0_arg1_str); attribute_Deprecated_func_mb_ereg_search_pos_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_search_regs_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_search_regs", sizeof("mb_ereg_search_regs") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_search_regs_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_regs_0->args[0].value, attribute_Deprecated_func_mb_ereg_search_regs_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_regs_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_search_regs_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_search_regs_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_regs_0->args[1].value, attribute_Deprecated_func_mb_ereg_search_regs_0_arg1_str); attribute_Deprecated_func_mb_ereg_search_regs_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_search_init_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_search_init", sizeof("mb_ereg_search_init") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_search_init_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_init_0->args[0].value, attribute_Deprecated_func_mb_ereg_search_init_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_init_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_search_init_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_search_init_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_init_0->args[1].value, attribute_Deprecated_func_mb_ereg_search_init_0_arg1_str); attribute_Deprecated_func_mb_ereg_search_init_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_search_getregs_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_search_getregs", sizeof("mb_ereg_search_getregs") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_search_getregs_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_getregs_0->args[0].value, attribute_Deprecated_func_mb_ereg_search_getregs_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_getregs_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_search_getregs_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_search_getregs_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_getregs_0->args[1].value, attribute_Deprecated_func_mb_ereg_search_getregs_0_arg1_str); attribute_Deprecated_func_mb_ereg_search_getregs_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_search_getpos_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_search_getpos", sizeof("mb_ereg_search_getpos") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_search_getpos_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_getpos_0->args[0].value, attribute_Deprecated_func_mb_ereg_search_getpos_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_getpos_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_search_getpos_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_search_getpos_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_getpos_0->args[1].value, attribute_Deprecated_func_mb_ereg_search_getpos_0_arg1_str); attribute_Deprecated_func_mb_ereg_search_getpos_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_ereg_search_setpos_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_ereg_search_setpos", sizeof("mb_ereg_search_setpos") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_ereg_search_setpos_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_setpos_0->args[0].value, attribute_Deprecated_func_mb_ereg_search_setpos_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_setpos_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_ereg_search_setpos_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_ereg_search_setpos_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_ereg_search_setpos_0->args[1].value, attribute_Deprecated_func_mb_ereg_search_setpos_0_arg1_str); attribute_Deprecated_func_mb_ereg_search_setpos_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mb_regex_set_options_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mb_regex_set_options", sizeof("mb_regex_set_options") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mb_regex_set_options_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mb_regex_set_options_0->args[0].value, attribute_Deprecated_func_mb_regex_set_options_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mb_regex_set_options_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mb_regex_set_options_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mb_regex_set_options_0_arg1_str = zend_string_init("because the underlying library is no longer maintained", strlen("because the underlying library is no longer maintained"), 1); ZVAL_STR(&attribute_Deprecated_func_mb_regex_set_options_0->args[1].value, attribute_Deprecated_func_mb_regex_set_options_0_arg1_str); diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index 1fd84063441e..1cb07ae964ad 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1168,8 +1168,7 @@ static void register_mysqli_symbols(int module_number) attribute_Deprecated_func_mysqli_execute_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); zend_attribute *attribute_Deprecated_func_mysqli_get_charset_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mysqli_get_charset", sizeof("mysqli_get_charset") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_mysqli_get_charset_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_mysqli_get_charset_0->args[0].value, attribute_Deprecated_func_mysqli_get_charset_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_mysqli_get_charset_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_mysqli_get_charset_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_mysqli_get_charset_0_arg1_str = zend_string_init("did you mean mysqli_character_set_name()?", strlen("did you mean mysqli_character_set_name()?"), 1); ZVAL_STR(&attribute_Deprecated_func_mysqli_get_charset_0->args[1].value, attribute_Deprecated_func_mysqli_get_charset_0_arg1_str); @@ -1468,8 +1467,7 @@ static zend_class_entry *register_class_mysqli(void) zend_add_parameter_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "connect", sizeof("connect") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); zend_attribute *attribute_Deprecated_func_get_charset_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "get_charset", sizeof("get_charset") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_get_charset_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_get_charset_0->args[0].value, attribute_Deprecated_func_get_charset_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_get_charset_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_get_charset_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_get_charset_0_arg1_str = zend_string_init("did you mean mysqli_character_set_name()?", strlen("did you mean mysqli_character_set_name()?"), 1); ZVAL_STR(&attribute_Deprecated_func_get_charset_0->args[1].value, attribute_Deprecated_func_get_charset_0_arg1_str); diff --git a/ext/spl/php_spl_arginfo.h b/ext/spl/php_spl_arginfo.h index fc3f4c08022d..6a561404b5ff 100644 --- a/ext/spl/php_spl_arginfo.h +++ b/ext/spl/php_spl_arginfo.h @@ -103,14 +103,13 @@ static void register_php_spl_symbols(int module_number) zend_string *attribute_Deprecated_func_spl_classes_0_arg0_str = zend_string_init("use ReflectionExtension::getClassNames() instead", strlen("use ReflectionExtension::getClassNames() instead"), 1); ZVAL_STR(&attribute_Deprecated_func_spl_classes_0->args[0].value, attribute_Deprecated_func_spl_classes_0_arg0_str); attribute_Deprecated_func_spl_classes_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - zend_string *attribute_Deprecated_func_spl_classes_0_arg1_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_spl_classes_0->args[1].value, attribute_Deprecated_func_spl_classes_0_arg1_str); + ZVAL_STR(&attribute_Deprecated_func_spl_classes_0->args[1].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_spl_classes_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_spl_object_hash_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "spl_object_hash", sizeof("spl_object_hash") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); zend_string *attribute_Deprecated_func_spl_object_hash_0_arg0_str = zend_string_init("consider using spl_object_id() instead", strlen("consider using spl_object_id() instead"), 1); ZVAL_STR(&attribute_Deprecated_func_spl_object_hash_0->args[0].value, attribute_Deprecated_func_spl_object_hash_0_arg0_str); attribute_Deprecated_func_spl_object_hash_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - ZVAL_STR_COPY(&attribute_Deprecated_func_spl_object_hash_0->args[1].value, attribute_Deprecated_func_spl_classes_0_arg1_str); + ZVAL_STR(&attribute_Deprecated_func_spl_object_hash_0->args[1].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_spl_object_hash_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); } diff --git a/ext/spl/spl_array_arginfo.h b/ext/spl/spl_array_arginfo.h index 0677200b0b0a..3d7d64818d16 100644 --- a/ext/spl/spl_array_arginfo.h +++ b/ext/spl/spl_array_arginfo.h @@ -299,44 +299,43 @@ static zend_class_entry *register_class_ArrayIterator(zend_class_entry *class_en zend_attribute *attribute_Deprecated_func_getflags_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "getflags", sizeof("getflags") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - zend_string *attribute_Deprecated_func_getflags_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_getflags_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_getflags_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_getflags_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_setflags_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setflags", sizeof("setflags") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_setflags_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_setflags_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_setflags_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_asort_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "asort", sizeof("asort") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_asort_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_asort_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_asort_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_ksort_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "ksort", sizeof("ksort") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_ksort_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_ksort_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_ksort_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_uasort_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "uasort", sizeof("uasort") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_uasort_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_uasort_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_uasort_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_uksort_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "uksort", sizeof("uksort") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_uksort_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_uksort_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_uksort_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_natsort_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "natsort", sizeof("natsort") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_natsort_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_natsort_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_natsort_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_natcasesort_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "natcasesort", sizeof("natcasesort") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_natcasesort_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_natcasesort_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_natcasesort_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_unserialize_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "unserialize", sizeof("unserialize") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_unserialize_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_unserialize_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_unserialize_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_serialize_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "serialize", sizeof("serialize") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1); - ZVAL_STR_COPY(&attribute_Deprecated_func_serialize_0->args[0].value, attribute_Deprecated_func_getflags_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_serialize_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_serialize_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); return class_entry; diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 4f0434b9d8a3..0155187f1616 100644 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -3945,8 +3945,7 @@ static void register_basic_functions_symbols(int module_number) #endif zend_attribute *attribute_Deprecated_func_metaphone_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "metaphone", sizeof("metaphone") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); - zend_string *attribute_Deprecated_func_metaphone_0_arg0_str = zend_string_init("8.6", strlen("8.6"), 1); - ZVAL_STR(&attribute_Deprecated_func_metaphone_0->args[0].value, attribute_Deprecated_func_metaphone_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_metaphone_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_metaphone_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_string *attribute_Deprecated_func_metaphone_0_arg1_str = zend_string_init("use a userland phonetic matching library instead", strlen("use a userland phonetic matching library instead"), 1); ZVAL_STR(&attribute_Deprecated_func_metaphone_0->args[1].value, attribute_Deprecated_func_metaphone_0_arg1_str); @@ -3960,7 +3959,7 @@ static void register_basic_functions_symbols(int module_number) zend_string *attribute_Deprecated_func_strcoll_0_arg0_str = zend_string_init("use Collator::compare() instead", strlen("use Collator::compare() instead"), 1); ZVAL_STR(&attribute_Deprecated_func_strcoll_0->args[0].value, attribute_Deprecated_func_strcoll_0_arg0_str); attribute_Deprecated_func_strcoll_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - ZVAL_STR_COPY(&attribute_Deprecated_func_strcoll_0->args[1].value, attribute_Deprecated_func_metaphone_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_strcoll_0->args[1].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_strcoll_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_utf8_encode_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "utf8_encode", sizeof("utf8_encode") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); @@ -3993,34 +3992,35 @@ static void register_basic_functions_symbols(int module_number) zend_string *attribute_Deprecated_func_doubleval_0_arg0_str = zend_string_init("use floatval() instead", strlen("use floatval() instead"), 1); ZVAL_STR(&attribute_Deprecated_func_doubleval_0->args[0].value, attribute_Deprecated_func_doubleval_0_arg0_str); attribute_Deprecated_func_doubleval_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - ZVAL_STR_COPY(&attribute_Deprecated_func_doubleval_0->args[1].value, attribute_Deprecated_func_metaphone_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_doubleval_0->args[1].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_doubleval_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_is_integer_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "is_integer", sizeof("is_integer") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); zend_string *attribute_Deprecated_func_is_integer_0_arg0_str = zend_string_init("use is_int() instead", strlen("use is_int() instead"), 1); ZVAL_STR(&attribute_Deprecated_func_is_integer_0->args[0].value, attribute_Deprecated_func_is_integer_0_arg0_str); attribute_Deprecated_func_is_integer_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - ZVAL_STR_COPY(&attribute_Deprecated_func_is_integer_0->args[1].value, attribute_Deprecated_func_metaphone_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_is_integer_0->args[1].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_is_integer_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_is_long_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "is_long", sizeof("is_long") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); ZVAL_STR_COPY(&attribute_Deprecated_func_is_long_0->args[0].value, attribute_Deprecated_func_is_integer_0_arg0_str); attribute_Deprecated_func_is_long_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - ZVAL_STR_COPY(&attribute_Deprecated_func_is_long_0->args[1].value, attribute_Deprecated_func_metaphone_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_is_long_0->args[1].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_is_long_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_func_is_double_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "is_double", sizeof("is_double") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); zend_string *attribute_Deprecated_func_is_double_0_arg0_str = zend_string_init("use is_float() instead", strlen("use is_float() instead"), 1); ZVAL_STR(&attribute_Deprecated_func_is_double_0->args[0].value, attribute_Deprecated_func_is_double_0_arg0_str); attribute_Deprecated_func_is_double_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - ZVAL_STR_COPY(&attribute_Deprecated_func_is_double_0->args[1].value, attribute_Deprecated_func_metaphone_0_arg0_str); + ZVAL_STR(&attribute_Deprecated_func_is_double_0->args[1].value, ZSTR_KNOWN(ZEND_STR_8_DOT_6)); attribute_Deprecated_func_is_double_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_const_SORT_LOCALE_STRING_0 = zend_add_global_constant_attribute(const_SORT_LOCALE_STRING, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); zend_string *attribute_Deprecated_const_SORT_LOCALE_STRING_0_arg0_str = zend_string_init("use one of the Collator::*sort*() methods instead", strlen("use one of the Collator::*sort*() methods instead"), 1); ZVAL_STR(&attribute_Deprecated_const_SORT_LOCALE_STRING_0->args[0].value, attribute_Deprecated_const_SORT_LOCALE_STRING_0_arg0_str); attribute_Deprecated_const_SORT_LOCALE_STRING_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); - ZVAL_STR_COPY(&attribute_Deprecated_const_SORT_LOCALE_STRING_0->args[1].value, attribute_Deprecated_func_metaphone_0_arg0_str); + zend_string *attribute_Deprecated_const_SORT_LOCALE_STRING_0_arg1_str = zend_string_init("8.6", strlen("8.6"), 1); + ZVAL_STR(&attribute_Deprecated_const_SORT_LOCALE_STRING_0->args[1].value, attribute_Deprecated_const_SORT_LOCALE_STRING_0_arg1_str); attribute_Deprecated_const_SORT_LOCALE_STRING_0->args[1].name = ZSTR_KNOWN(ZEND_STR_SINCE); zend_attribute *attribute_Deprecated_const_ASSERT_ACTIVE_0 = zend_add_global_constant_attribute(const_ASSERT_ACTIVE, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2); From 0df284a4fcbb80910d3c427250ef32861917a455 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Wed, 29 Jul 2026 12:01:44 -0400 Subject: [PATCH 3/3] ext/session: check the created ID before validating it session_create_id() passes the return value of s_create_sid() straight into s_validate_sid(). A userland create_sid() that throws makes ps_create_sid_user() return NULL, and ps_validate_sid_user() then reaches ZVAL_STR_COPY() with a NULL key. Stop the retry loop when no ID was created and propagate a pending exception instead of reporting a plain failure. The four s_create_sid() call sites in php_session_initialize() and session_regenerate_id() already test for NULL. Closes GH-22924 --- ext/session/session.c | 6 +++ .../session_create_id_create_sid_throws.phpt | 49 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt diff --git a/ext/session/session.c b/ext/session/session.c index 6380505ae951..f03813c791d6 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -2508,6 +2508,9 @@ PHP_FUNCTION(session_create_id) int limit = 3; while (limit--) { new_id = PS(mod)->s_create_sid(&PS(mod_data)); + if (!new_id) { + break; + } if (!PS(mod)->s_validate_sid || (PS(mod_user_implemented) && Z_ISUNDEF(PS(mod_user_names).ps_validate_sid))) { break; } else { @@ -2529,6 +2532,9 @@ PHP_FUNCTION(session_create_id) zend_string_release_ex(new_id, 0); } else { smart_str_free(&id); + if (EG(exception)) { + RETURN_THROWS(); + } php_error_docref(NULL, E_WARNING, "Failed to create new ID"); RETURN_FALSE; } diff --git a/ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt b/ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt new file mode 100644 index 000000000000..b65c0671d940 --- /dev/null +++ b/ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt @@ -0,0 +1,49 @@ +--TEST-- +session_create_id() when the create_sid handler throws +--INI-- +session.save_handler=files +session.name=PHPSESSID +session.gc_probability=0 +--EXTENSIONS-- +session +--FILE-- +calls++ > 0) { + throw new Exception('create_sid failed'); + } + return parent::create_sid(); + } + + public function validateId(string $id): bool + { + return false; + } +} + +session_set_save_handler(new MySessionHandler(), true); +session_start(); + +try { + session_create_id(); +} catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), PHP_EOL; + $previous = $e->getPrevious(); + echo $previous::class, ": ", $previous->getMessage(), PHP_EOL; +} + +var_dump(session_status() === PHP_SESSION_ACTIVE); + +?> +--EXPECT-- +Error: Session id must be a string +Exception: create_sid failed +bool(true)