com php-src: Change E_ERROR and some E_WARNING to E_RECOVERABLE_ERROR.: ext/session/mod_user.c ext/session/mod_user_class.c ext/session/session.c
ext/session/tests/bug60860.phpt ext/session/te sts/bug66481.phpt ext/session/tests/bug679 72.phpt ext/session/tests/session_module_name_var
iation3.phpt ext/session/tests/session_name_error.p hpt ext/session/tests/session_name_variation1.phpt
ext/session/tests/session_save_path_variation4.phpt ext/session/t
| From: | Yasuo Ohgaki | Date: | Tue, 21 Jul 2015 03:59:23 +0000 |
| Subject: | com php-src: Change E_ERROR and some E_WARNING to E_RECOVERABLE_ERROR.: ext/session/mod_user.c ext/session/mod_user_class.c ext/session/session.c ext/session/tests/bug60860.phpt ext/session/te sts/bug66481.phpt ext/session/tests/bug679 72.phpt ext/session/tests/session_module_name_var iation3.phpt ext/session/tests/session_name_error.p hpt ext/session/tests/session_name_variation1.phpt ext/session/tests/session_save_path_variation4.phpt ext/session/t |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88079@lists.php.net to get a copy of this message | ||
Commit: ad4533fdbabcc3e545277e30023b2fdce16297a0
Author: Yasuo Ohgaki <yohgaki@php.net> Tue, 21 Jul 2015 12:59:23 +0900
Parents: 22767a48a7bd060f3397713dfe5f2a5581496097
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ad4533fdbabcc3e545277e30023b2fdce16297a0
Log:
Change E_ERROR and some E_WARNING to E_RECOVERABLE_ERROR.
Changed paths:
M ext/session/mod_user.c
M ext/session/mod_user_class.c
M ext/session/session.c
M ext/session/tests/bug60860.phpt
M ext/session/tests/bug66481.phpt
M ext/session/tests/bug67972.phpt
M ext/session/tests/session_module_name_variation3.phpt
M ext/session/tests/session_name_error.phpt
M ext/session/tests/session_name_variation1.phpt
M ext/session/tests/session_save_path_variation4.phpt
M ext/session/tests/session_set_save_handler_class_014.phpt
M ext/session/tests/session_set_save_handler_error3.phpt
M ext/session/tests/session_set_save_handler_sid_002.phpt
diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c index 1196d86..34a5a21 100644 --- a/ext/session/mod_user.c +++ b/ext/session/mod_user.c @@ -191,12 +191,12 @@ PS_CREATE_SID_FUNC(user) } zval_ptr_dtor(&retval); } else { - php_error_docref(NULL, E_ERROR, "No session id returned by function"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "No session id returned by function"); return NULL; } if (!id) { - php_error_docref(NULL, E_ERROR, "Session id must be a string"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Session id must be a string"); return NULL; } diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c index 82aea14..d06902c 100644 --- a/ext/session/mod_user_class.c +++ b/ext/session/mod_user_class.c @@ -23,7 +23,7 @@ #define PS_SANITY_CHECK \ if (PS(default_mod) == NULL) { \ - php_error_docref(NULL, E_CORE_ERROR, "Cannot call default session handler"); \ + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Cannot call default session handler"); \ RETURN_FALSE; \ } diff --git a/ext/session/session.c b/ext/session/session.c index ef17b86..cf4af11 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -339,7 +339,7 @@ PHPAPI zend_string *php_session_create_id(PS_CREATE_SID_ARGS) /* {{{ */ case PS_HASH_FUNC_OTHER: if (!PS(hash_ops)) { efree(buf); - php_error_docref(NULL, E_ERROR, "Invalid session hash function"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Invalid session hash function"); return NULL; } @@ -351,7 +351,7 @@ PHPAPI zend_string *php_session_create_id(PS_CREATE_SID_ARGS) /* {{{ */ #endif /* HAVE_HASH_EXT */ default: efree(buf); - php_error_docref(NULL, E_ERROR, "Invalid session hash function"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Invalid session hash function"); return NULL; } efree(buf); @@ -480,7 +480,7 @@ static void php_session_initialize(void) /* {{{ */ zend_string *val = NULL; if (!PS(mod)) { - php_error_docref(NULL, E_ERROR, "No storage module chosen - failed to initialize session"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "No storage module chosen - failed to initialize session"); return; } @@ -488,7 +488,7 @@ static void php_session_initialize(void) /* {{{ */ if (PS(mod)->s_open(&PS(mod_data), PS(save_path), PS(session_name)) == FAILURE /* || PS(mod_data) == NULL */ /* FIXME: open must set valid PS(mod_data) with success */ ) { - php_error_docref(NULL, E_ERROR, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path)); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path)); return; } @@ -496,7 +496,7 @@ static void php_session_initialize(void) /* {{{ */ if (!PS(id)) { PS(id) = PS(mod)->s_create_sid(&PS(mod_data)); if (!PS(id)) { - php_error_docref(NULL, E_ERROR, "Failed to create session ID: %s (path: %s)", PS(mod)->s_name, PS(save_path)); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Failed to create session ID: %s (path: %s)", PS(mod)->s_name, PS(save_path)); return; } if (PS(use_cookies)) { @@ -600,7 +600,7 @@ static PHP_INI_MH(OnUpdateSaveHandler) /* {{{ */ int err_type; if (stage == ZEND_INI_STAGE_RUNTIME) { - err_type = E_WARNING; + err_type = E_RECOVERABLE_ERROR; } else { err_type = E_ERROR; } @@ -630,7 +630,7 @@ static PHP_INI_MH(OnUpdateSerializer) /* {{{ */ int err_type; if (stage == ZEND_INI_STAGE_RUNTIME) { - err_type = E_WARNING; + err_type = E_RECOVERABLE_ERROR; } else { err_type = E_ERROR; } @@ -699,7 +699,7 @@ static PHP_INI_MH(OnUpdateName) /* {{{ */ int err_type; if (stage == ZEND_INI_STAGE_RUNTIME || stage == ZEND_INI_STAGE_ACTIVATE || stage == ZEND_INI_STAGE_STARTUP) { - err_type = E_WARNING; + err_type = E_RECOVERABLE_ERROR; } else { err_type = E_ERROR; } @@ -1829,7 +1829,7 @@ static PHP_FUNCTION(session_set_save_handler) add_next_index_zval(&PS(mod_user_names).names[i], obj); add_next_index_str(&PS(mod_user_names).names[i], zend_string_copy(func_name)); } else { - php_error_docref(NULL, E_ERROR, "Session handler's function table is corrupt"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Session handler's function table is corrupt"); RETURN_FALSE; } diff --git a/ext/session/tests/bug60860.phpt b/ext/session/tests/bug60860.phpt index 8318586..194239d 100644 --- a/ext/session/tests/bug60860.phpt +++ b/ext/session/tests/bug60860.phpt @@ -14,4 +14,4 @@ echo "ok\n"; --EXPECTF-- Warning: session_start(): user session functions not defined in %s on line 3 -Fatal error: session_start(): Failed to initialize storage module: user (path:%s) in %s on line 3 +Catchable fatal error: session_start(): Failed to initialize storage module: user (path:%s) in %s on line 3 diff --git a/ext/session/tests/bug66481.phpt b/ext/session/tests/bug66481.phpt index 5525ae8..27171da 100644 --- a/ext/session/tests/bug66481.phpt +++ b/ext/session/tests/bug66481.phpt @@ -11,8 +11,8 @@ session.name= var_dump(session_name("foo")); var_dump(session_name("bar")); --EXPECTF-- -PHP Warning: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 +PHP Catchable fatal error: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 -Warning: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 +Catchable fatal error: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 string(9) "PHPSESSID" string(3) "foo" diff --git a/ext/session/tests/bug67972.phpt b/ext/session/tests/bug67972.phpt index 63ed3a9..c4bcc1a 100644 --- a/ext/session/tests/bug67972.phpt +++ b/ext/session/tests/bug67972.phpt @@ -7,4 +7,4 @@ Bug #67972: SessionHandler Invalid memory read create_sid() (new SessionHandler)->create_sid(); --EXPECTF-- -Fatal error: SessionHandler::create_sid(): Cannot call default session handler in %s on line %d +Catchable fatal error: SessionHandler::create_sid(): Cannot call default session handler in %s on line %d diff --git a/ext/session/tests/session_module_name_variation3.phpt b/ext/session/tests/session_module_name_variation3.phpt index de49195..aabb8ba 100644 --- a/ext/session/tests/session_module_name_variation3.phpt +++ b/ext/session/tests/session_module_name_variation3.phpt @@ -48,4 +48,4 @@ Stack trace: #2 {main} thrown in %s on line %d -Fatal error: session_start(): Failed to initialize storage module: %s in %s%esession_module_name_variation3.php on line %d +Catchable fatal error: session_start(): Failed to initialize storage module: %s in %s%esession_module_name_variation3.php on line %d diff --git a/ext/session/tests/session_name_error.phpt b/ext/session/tests/session_name_error.phpt index 9f0101d..cd7e364 100644 --- a/ext/session/tests/session_name_error.phpt +++ b/ext/session/tests/session_name_error.phpt @@ -8,6 +8,21 @@ session.name=PHPSESSID --FILE-- <?php +function error_handler($errno, $errstr, $errfile, $errline) +{ + if ($errno & E_NOTICE) { + return ture; // Ignore notices + } + if ($errno & E_RECOVERABLE_ERROR) { + // Handle E_REVOCERABLE_ERROR + echo "\nE_RECOVERABLE_ERROR: {$errstr} in {$errfile} on line {$errline}\n"; + return true; // Continue execution + } + return false; +} + +set_error_handler('error_handler'); + ob_start(); /* @@ -99,103 +114,103 @@ ob_end_flush(); -- Iteration 1 -- -Warning: session_name(): session.name cannot be a numeric or empty '0' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '0' in %s on line %d int(0) string(9) "PHPSESSID" -- Iteration 2 -- -Warning: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d int(1) string(9) "PHPSESSID" -- Iteration 3 -- -Warning: session_name(): session.name cannot be a numeric or empty '12345' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '12345' in %s on line %d int(12345) string(9) "PHPSESSID" -- Iteration 4 -- -Warning: session_name(): session.name cannot be a numeric or empty '-2345' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '-2345' in %s on line %d int(-2345) string(9) "PHPSESSID" -- Iteration 5 -- -Warning: session_name(): session.name cannot be a numeric or empty '10.5' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '10.5' in %s on line %d float(10.5) string(9) "PHPSESSID" -- Iteration 6 -- -Warning: session_name(): session.name cannot be a numeric or empty '-10.5' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '-10.5' in %s on line %d float(-10.5) string(9) "PHPSESSID" -- Iteration 7 -- -Warning: session_name(): session.name cannot be a numeric or empty '123456789000' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '123456789000' in %s on line %d float(123456789000) string(9) "PHPSESSID" -- Iteration 8 -- -Warning: session_name(): session.name cannot be a numeric or empty '1.23456789E-9' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1.23456789E-9' in %s on line %d float(1.23456789E-9) string(9) "PHPSESSID" -- Iteration 9 -- -Warning: session_name(): session.name cannot be a numeric or empty '0.5' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '0.5' in %s on line %d float(0.5) string(9) "PHPSESSID" -- Iteration 10 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(9) "PHPSESSID" -- Iteration 11 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(9) "PHPSESSID" -- Iteration 12 -- -Warning: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d bool(true) string(9) "PHPSESSID" -- Iteration 13 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d bool(false) string(9) "PHPSESSID" -- Iteration 14 -- -Warning: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d bool(true) string(9) "PHPSESSID" -- Iteration 15 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d bool(false) string(9) "PHPSESSID" -- Iteration 16 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d string(0) "" string(9) "PHPSESSID" -- Iteration 17 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d string(0) "" string(9) "PHPSESSID" @@ -218,13 +233,13 @@ string(12) "Hello World!" -- Iteration 22 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(12) "Hello World!" -- Iteration 23 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(12) "Hello World!" diff --git a/ext/session/tests/session_name_variation1.phpt b/ext/session/tests/session_name_variation1.phpt index b0de3ee..c00ffbf 100644 --- a/ext/session/tests/session_name_variation1.phpt +++ b/ext/session/tests/session_name_variation1.phpt @@ -7,6 +7,20 @@ session.name=PHPSESSID <?php include('skipif.inc'); ?> --FILE-- <?php +function error_handler($errno, $errstr, $errfile, $errline) +{ + if ($errno & E_NOTICE) { + return ture; // Ignore notices + } + if ($errno & E_RECOVERABLE_ERROR) { + // Handle E_REVOCERABLE_ERROR + echo "\nE_RECOVERABLE_ERROR: {$errstr} in {$errfile} on line {$errline}\n"; + return true; // Continue execution + } + return false; +} + +set_error_handler('error_handler'); ob_start(); @@ -52,7 +66,7 @@ string(1) " " bool(true) string(1) " " -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d string(1) " " bool(true) string(1) " " diff --git a/ext/session/tests/session_save_path_variation4.phpt b/ext/session/tests/session_save_path_variation4.phpt index 80db6ca..0783938 100644 --- a/ext/session/tests/session_save_path_variation4.phpt +++ b/ext/session/tests/session_save_path_variation4.phpt @@ -56,5 +56,5 @@ string(0) "" Warning: session_start(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line %d -Fatal error: session_start(): Failed to initialize storage module: files (path: ) in %s on line %d +Catchable fatal error: session_start(): Failed to initialize storage module: files (path: ) in %s on line %d diff --git a/ext/session/tests/session_set_save_handler_class_014.phpt b/ext/session/tests/session_set_save_handler_class_014.phpt index ea62beb..6645907 100644 --- a/ext/session/tests/session_set_save_handler_class_014.phpt +++ b/ext/session/tests/session_set_save_handler_class_014.phpt @@ -27,4 +27,4 @@ session_start(); --EXPECTF-- *** Testing session_set_save_handler() : calling default handler when save_handler=user *** -Fatal error: SessionHandler::open(): Cannot call default session handler in %s on line %d +Catchable fatal error: SessionHandler::open(): Cannot call default session handler in %s on line %d diff --git a/ext/session/tests/session_set_save_handler_error3.phpt b/ext/session/tests/session_set_save_handler_error3.phpt index fdf306a..345ebe9 100644 --- a/ext/session/tests/session_set_save_handler_error3.phpt +++ b/ext/session/tests/session_set_save_handler_error3.phpt @@ -41,4 +41,4 @@ Stack trace: #2 {main} thrown in %s on line %d -Fatal error: session_start(): Failed to initialize storage module: %s in %ssession_set_save_handler_error3.php on line %d +Catchable fatal error: session_start(): Failed to initialize storage module: %s in %ssession_set_save_handler_error3.php on line %d diff --git a/ext/session/tests/session_set_save_handler_sid_002.phpt b/ext/session/tests/session_set_save_handler_sid_002.phpt index f9a72ae..f9edb82 100644 --- a/ext/session/tests/session_set_save_handler_sid_002.phpt +++ b/ext/session/tests/session_set_save_handler_sid_002.phpt @@ -74,4 +74,4 @@ session_unset(); --EXPECTF-- *** Testing session_set_save_handler() function: create_sid *** -Fatal error: session_start(): Session id must be a string in %s on line %d +Catchable fatal error: session_start(): Session id must be a string in %s on line %d
diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c index 1196d86..34a5a21 100644 --- a/ext/session/mod_user.c +++ b/ext/session/mod_user.c @@ -191,12 +191,12 @@ PS_CREATE_SID_FUNC(user) } zval_ptr_dtor(&retval); } else { - php_error_docref(NULL, E_ERROR, "No session id returned by function"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "No session id returned by function"); return NULL; } if (!id) { - php_error_docref(NULL, E_ERROR, "Session id must be a string"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Session id must be a string"); return NULL; } diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c index 82aea14..d06902c 100644 --- a/ext/session/mod_user_class.c +++ b/ext/session/mod_user_class.c @@ -23,7 +23,7 @@ #define PS_SANITY_CHECK \ if (PS(default_mod) == NULL) { \ - php_error_docref(NULL, E_CORE_ERROR, "Cannot call default session handler"); \ + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Cannot call default session handler"); \ RETURN_FALSE; \ } diff --git a/ext/session/session.c b/ext/session/session.c index ef17b86..cf4af11 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -339,7 +339,7 @@ PHPAPI zend_string *php_session_create_id(PS_CREATE_SID_ARGS) /* {{{ */ case PS_HASH_FUNC_OTHER: if (!PS(hash_ops)) { efree(buf); - php_error_docref(NULL, E_ERROR, "Invalid session hash function"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Invalid session hash function"); return NULL; } @@ -351,7 +351,7 @@ PHPAPI zend_string *php_session_create_id(PS_CREATE_SID_ARGS) /* {{{ */ #endif /* HAVE_HASH_EXT */ default: efree(buf); - php_error_docref(NULL, E_ERROR, "Invalid session hash function"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Invalid session hash function"); return NULL; } efree(buf); @@ -480,7 +480,7 @@ static void php_session_initialize(void) /* {{{ */ zend_string *val = NULL; if (!PS(mod)) { - php_error_docref(NULL, E_ERROR, "No storage module chosen - failed to initialize session"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "No storage module chosen - failed to initialize session"); return; } @@ -488,7 +488,7 @@ static void php_session_initialize(void) /* {{{ */ if (PS(mod)->s_open(&PS(mod_data), PS(save_path), PS(session_name)) == FAILURE /* || PS(mod_data) == NULL */ /* FIXME: open must set valid PS(mod_data) with success */ ) { - php_error_docref(NULL, E_ERROR, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path)); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path)); return; } @@ -496,7 +496,7 @@ static void php_session_initialize(void) /* {{{ */ if (!PS(id)) { PS(id) = PS(mod)->s_create_sid(&PS(mod_data)); if (!PS(id)) { - php_error_docref(NULL, E_ERROR, "Failed to create session ID: %s (path: %s)", PS(mod)->s_name, PS(save_path)); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Failed to create session ID: %s (path: %s)", PS(mod)->s_name, PS(save_path)); return; } if (PS(use_cookies)) { @@ -600,7 +600,7 @@ static PHP_INI_MH(OnUpdateSaveHandler) /* {{{ */ int err_type; if (stage == ZEND_INI_STAGE_RUNTIME) { - err_type = E_WARNING; + err_type = E_RECOVERABLE_ERROR; } else { err_type = E_ERROR; } @@ -630,7 +630,7 @@ static PHP_INI_MH(OnUpdateSerializer) /* {{{ */ int err_type; if (stage == ZEND_INI_STAGE_RUNTIME) { - err_type = E_WARNING; + err_type = E_RECOVERABLE_ERROR; } else { err_type = E_ERROR; } @@ -699,7 +699,7 @@ static PHP_INI_MH(OnUpdateName) /* {{{ */ int err_type; if (stage == ZEND_INI_STAGE_RUNTIME || stage == ZEND_INI_STAGE_ACTIVATE || stage == ZEND_INI_STAGE_STARTUP) { - err_type = E_WARNING; + err_type = E_RECOVERABLE_ERROR; } else { err_type = E_ERROR; } @@ -1829,7 +1829,7 @@ static PHP_FUNCTION(session_set_save_handler) add_next_index_zval(&PS(mod_user_names).names[i], obj); add_next_index_str(&PS(mod_user_names).names[i], zend_string_copy(func_name)); } else { - php_error_docref(NULL, E_ERROR, "Session handler's function table is corrupt"); + php_error_docref(NULL, E_RECOVERABLE_ERROR, "Session handler's function table is corrupt"); RETURN_FALSE; } diff --git a/ext/session/tests/bug60860.phpt b/ext/session/tests/bug60860.phpt index 8318586..194239d 100644 --- a/ext/session/tests/bug60860.phpt +++ b/ext/session/tests/bug60860.phpt @@ -14,4 +14,4 @@ echo "ok\n"; --EXPECTF-- Warning: session_start(): user session functions not defined in %s on line 3 -Fatal error: session_start(): Failed to initialize storage module: user (path:%s) in %s on line 3 +Catchable fatal error: session_start(): Failed to initialize storage module: user (path:%s) in %s on line 3 diff --git a/ext/session/tests/bug66481.phpt b/ext/session/tests/bug66481.phpt index 5525ae8..27171da 100644 --- a/ext/session/tests/bug66481.phpt +++ b/ext/session/tests/bug66481.phpt @@ -11,8 +11,8 @@ session.name= var_dump(session_name("foo")); var_dump(session_name("bar")); --EXPECTF-- -PHP Warning: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 +PHP Catchable fatal error: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 -Warning: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 +Catchable fatal error: PHP Startup: session.name cannot be a numeric or empty '' in Unknown on line 0 string(9) "PHPSESSID" string(3) "foo" diff --git a/ext/session/tests/bug67972.phpt b/ext/session/tests/bug67972.phpt index 63ed3a9..c4bcc1a 100644 --- a/ext/session/tests/bug67972.phpt +++ b/ext/session/tests/bug67972.phpt @@ -7,4 +7,4 @@ Bug #67972: SessionHandler Invalid memory read create_sid() (new SessionHandler)->create_sid(); --EXPECTF-- -Fatal error: SessionHandler::create_sid(): Cannot call default session handler in %s on line %d +Catchable fatal error: SessionHandler::create_sid(): Cannot call default session handler in %s on line %d diff --git a/ext/session/tests/session_module_name_variation3.phpt b/ext/session/tests/session_module_name_variation3.phpt index de49195..aabb8ba 100644 --- a/ext/session/tests/session_module_name_variation3.phpt +++ b/ext/session/tests/session_module_name_variation3.phpt @@ -48,4 +48,4 @@ Stack trace: #2 {main} thrown in %s on line %d -Fatal error: session_start(): Failed to initialize storage module: %s in %s%esession_module_name_variation3.php on line %d +Catchable fatal error: session_start(): Failed to initialize storage module: %s in %s%esession_module_name_variation3.php on line %d diff --git a/ext/session/tests/session_name_error.phpt b/ext/session/tests/session_name_error.phpt index 9f0101d..cd7e364 100644 --- a/ext/session/tests/session_name_error.phpt +++ b/ext/session/tests/session_name_error.phpt @@ -8,6 +8,21 @@ session.name=PHPSESSID --FILE-- <?php +function error_handler($errno, $errstr, $errfile, $errline) +{ + if ($errno & E_NOTICE) { + return ture; // Ignore notices + } + if ($errno & E_RECOVERABLE_ERROR) { + // Handle E_REVOCERABLE_ERROR + echo "\nE_RECOVERABLE_ERROR: {$errstr} in {$errfile} on line {$errline}\n"; + return true; // Continue execution + } + return false; +} + +set_error_handler('error_handler'); + ob_start(); /* @@ -99,103 +114,103 @@ ob_end_flush(); -- Iteration 1 -- -Warning: session_name(): session.name cannot be a numeric or empty '0' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '0' in %s on line %d int(0) string(9) "PHPSESSID" -- Iteration 2 -- -Warning: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d int(1) string(9) "PHPSESSID" -- Iteration 3 -- -Warning: session_name(): session.name cannot be a numeric or empty '12345' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '12345' in %s on line %d int(12345) string(9) "PHPSESSID" -- Iteration 4 -- -Warning: session_name(): session.name cannot be a numeric or empty '-2345' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '-2345' in %s on line %d int(-2345) string(9) "PHPSESSID" -- Iteration 5 -- -Warning: session_name(): session.name cannot be a numeric or empty '10.5' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '10.5' in %s on line %d float(10.5) string(9) "PHPSESSID" -- Iteration 6 -- -Warning: session_name(): session.name cannot be a numeric or empty '-10.5' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '-10.5' in %s on line %d float(-10.5) string(9) "PHPSESSID" -- Iteration 7 -- -Warning: session_name(): session.name cannot be a numeric or empty '123456789000' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '123456789000' in %s on line %d float(123456789000) string(9) "PHPSESSID" -- Iteration 8 -- -Warning: session_name(): session.name cannot be a numeric or empty '1.23456789E-9' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1.23456789E-9' in %s on line %d float(1.23456789E-9) string(9) "PHPSESSID" -- Iteration 9 -- -Warning: session_name(): session.name cannot be a numeric or empty '0.5' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '0.5' in %s on line %d float(0.5) string(9) "PHPSESSID" -- Iteration 10 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(9) "PHPSESSID" -- Iteration 11 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(9) "PHPSESSID" -- Iteration 12 -- -Warning: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d bool(true) string(9) "PHPSESSID" -- Iteration 13 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d bool(false) string(9) "PHPSESSID" -- Iteration 14 -- -Warning: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '1' in %s on line %d bool(true) string(9) "PHPSESSID" -- Iteration 15 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d bool(false) string(9) "PHPSESSID" -- Iteration 16 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d string(0) "" string(9) "PHPSESSID" -- Iteration 17 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d string(0) "" string(9) "PHPSESSID" @@ -218,13 +233,13 @@ string(12) "Hello World!" -- Iteration 22 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(12) "Hello World!" -- Iteration 23 -- -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d NULL string(12) "Hello World!" diff --git a/ext/session/tests/session_name_variation1.phpt b/ext/session/tests/session_name_variation1.phpt index b0de3ee..c00ffbf 100644 --- a/ext/session/tests/session_name_variation1.phpt +++ b/ext/session/tests/session_name_variation1.phpt @@ -7,6 +7,20 @@ session.name=PHPSESSID <?php include('skipif.inc'); ?> --FILE-- <?php +function error_handler($errno, $errstr, $errfile, $errline) +{ + if ($errno & E_NOTICE) { + return ture; // Ignore notices + } + if ($errno & E_RECOVERABLE_ERROR) { + // Handle E_REVOCERABLE_ERROR + echo "\nE_RECOVERABLE_ERROR: {$errstr} in {$errfile} on line {$errline}\n"; + return true; // Continue execution + } + return false; +} + +set_error_handler('error_handler'); ob_start(); @@ -52,7 +66,7 @@ string(1) " " bool(true) string(1) " " -Warning: session_name(): session.name cannot be a numeric or empty '' in %s on line %d +E_RECOVERABLE_ERROR: session_name(): session.name cannot be a numeric or empty '' in %s on line %d string(1) " " bool(true) string(1) " " diff --git a/ext/session/tests/session_save_path_variation4.phpt b/ext/session/tests/session_save_path_variation4.phpt index 80db6ca..0783938 100644 --- a/ext/session/tests/session_save_path_variation4.phpt +++ b/ext/session/tests/session_save_path_variation4.phpt @@ -56,5 +56,5 @@ string(0) "" Warning: session_start(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line %d -Fatal error: session_start(): Failed to initialize storage module: files (path: ) in %s on line %d +Catchable fatal error: session_start(): Failed to initialize storage module: files (path: ) in %s on line %d diff --git a/ext/session/tests/session_set_save_handler_class_014.phpt b/ext/session/tests/session_set_save_handler_class_014.phpt index ea62beb..6645907 100644 --- a/ext/session/tests/session_set_save_handler_class_014.phpt +++ b/ext/session/tests/session_set_save_handler_class_014.phpt @@ -27,4 +27,4 @@ session_start(); --EXPECTF-- *** Testing session_set_save_handler() : calling default handler when save_handler=user *** -Fatal error: SessionHandler::open(): Cannot call default session handler in %s on line %d +Catchable fatal error: SessionHandler::open(): Cannot call default session handler in %s on line %d diff --git a/ext/session/tests/session_set_save_handler_error3.phpt b/ext/session/tests/session_set_save_handler_error3.phpt index fdf306a..345ebe9 100644 --- a/ext/session/tests/session_set_save_handler_error3.phpt +++ b/ext/session/tests/session_set_save_handler_error3.phpt @@ -41,4 +41,4 @@ Stack trace: #2 {main} thrown in %s on line %d -Fatal error: session_start(): Failed to initialize storage module: %s in %ssession_set_save_handler_error3.php on line %d +Catchable fatal error: session_start(): Failed to initialize storage module: %s in %ssession_set_save_handler_error3.php on line %d diff --git a/ext/session/tests/session_set_save_handler_sid_002.phpt b/ext/session/tests/session_set_save_handler_sid_002.phpt index f9a72ae..f9edb82 100644 --- a/ext/session/tests/session_set_save_handler_sid_002.phpt +++ b/ext/session/tests/session_set_save_handler_sid_002.phpt @@ -74,4 +74,4 @@ session_unset(); --EXPECTF-- *** Testing session_set_save_handler() function: create_sid *** -Fatal error: session_start(): Session id must be a string in %s on line %d +Catchable fatal error: session_start(): Session id must be a string in %s on line %d