}
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;
}
#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; \
}
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;
}
#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);
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;
}
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;
}
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)) {
int err_type;
if (stage == ZEND_INI_STAGE_RUNTIME) {
- err_type = E_WARNING;
+ err_type = E_RECOVERABLE_ERROR;
} else {
err_type = E_ERROR;
}
int err_type;
if (stage == ZEND_INI_STAGE_RUNTIME) {
- err_type = E_WARNING;
+ err_type = E_RECOVERABLE_ERROR;
} else {
err_type = E_ERROR;
}
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;
}
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;
}
--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
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"
(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
#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
--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();
/*
-- 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"
-- 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!"
<?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();
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) " "
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
--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
#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
--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