Fix bug #71038 - session_start() returns true even when it failed

PR #2167
This commit is contained in:
Yasuo Ohgaki 2016-11-17 11:09:07 +09:00
parent 552c957500
commit 7f196e321f
71 changed files with 1097 additions and 403 deletions

View File

@ -36,6 +36,36 @@ PHP 7.2 UPGRADE NOTES
keys. This fixes the behaviour of previous versions, where numeric string
property names would become inaccessible string keys.
- Session:
. Session is made to manage session status corretly and prevents invalid operations.
Only inappropriate codes are affected by this change. If you have problems with this,
it means you have problem in your code.
. Functions are made to set or return correct session status.
session_start(), session_status(), session_regenerate_id()
. Functions are made to return bool from null. These functions have void parameter
and void parameter is checked.
session_unset(), session_write_close()/session_commit(), session_abort(),
session_reset()
. Functions prohibit invalid operations with regard to session status and
HTTP header status, returns correct bool return value.
session_start(), session_set_cookie_params(), session_name(), session_module_name(),
session_set_save_handler(), session_regenerate_id(), session_cache_limiter(),
session_cache_expire(), session_unset(), session_destroy(),
session_write_close()/session_commit(), session_reset()
. INI value change by ini_set() returns update status correctly. Invalid INI modifications
are checked and made to fail.
session.name, session.save_path, session.cookie_lifetime, session.cookie_path,
session.cookie_domain, session.cookie_httponly, session.cookie_secure,
session.use_cookies, session.use_only_cookies, session.use_strict_mode,
session.referer_check, session.cache_limiter, session.cache_expire,
session.lazy_write, session.save_handler, session.serialize_handler,
session.gc_probability, session.gc_divior, session.gc_maxlifetime,
. Some E_ERRORs are changed to E_WARNING since session status is managed correctly.
session_start()
. Session no longer initialize $_SESSION for invalid and useless session.
session_start()
========================================
2. New Features
========================================

View File

@ -31,3 +31,8 @@ PHP 7.1 INTERNALS UPGRADE NOTES
3. Module changes
========================
- Session:
. php_session_start()/session_reset_id() return value is changed from void to int.
It returns SUCCESS/FAILURE.
. Session module manages session status correctly.

View File

@ -27,7 +27,7 @@
# include "ext/hash/php_hash.h"
#endif
#define PHP_SESSION_API 20150121
#define PHP_SESSION_API 20161017
#include "php_version.h"
#define PHP_SESSION_VERSION PHP_VERSION
@ -265,13 +265,13 @@ PHPAPI int php_session_register_serializer(const char *name,
int (*decode)(PS_SERIALIZER_DECODE_ARGS));
PHPAPI void php_session_set_id(char *id);
PHPAPI void php_session_start(void);
PHPAPI int php_session_start(void);
PHPAPI ps_module *_php_find_ps_module(char *name);
PHPAPI const ps_serializer *_php_find_ps_serializer(char *name);
PHPAPI int php_session_valid_key(const char *key);
PHPAPI void php_session_reset_id(void);
PHPAPI int php_session_reset_id(void);
#define PS_ADD_VARL(name) do { \
php_add_session_var(name); \

View File

@ -94,10 +94,16 @@ zend_class_entry *php_session_update_timestamp_iface_entry;
return FAILURE; \
}
#define SESSION_CHECK_OUTPUT_STATE \
if (SG(headers_sent) && stage != ZEND_INI_STAGE_DEACTIVATE) { \
php_error_docref(NULL, E_WARNING, "Headers already sent. You cannot change the session module's ini settings at this time"); \
return FAILURE; \
}
#define APPLY_TRANS_SID (PS(use_trans_sid) && !PS(use_only_cookies))
static void php_session_send_cookie(void);
static void php_session_abort(void);
static int php_session_send_cookie(void);
static int php_session_abort(void);
/* Dispatched by RINIT and by php_session_destroy */
static inline void php_rinit_session_globals(void) /* {{{ */
@ -370,7 +376,7 @@ static zend_long php_session_gc(zend_bool immediate) /* {{{ */
return num;
} /* }}} */
static void php_session_initialize(void) /* {{{ */
static int php_session_initialize(void) /* {{{ */
{
zend_string *val = NULL;
@ -378,8 +384,8 @@ static void php_session_initialize(void) /* {{{ */
if (!PS(mod)) {
PS(session_status) = php_session_disabled;
php_error_docref(NULL, E_ERROR, "No storage module chosen - failed to initialize session");
return;
php_error_docref(NULL, E_WARNING, "No storage module chosen - failed to initialize session");
return FAILURE;
}
/* Open session handler first */
@ -387,8 +393,8 @@ static void php_session_initialize(void) /* {{{ */
/* || PS(mod_data) == NULL */ /* FIXME: open must set valid PS(mod_data) with success */
) {
php_session_abort();
php_error_docref(NULL, E_ERROR, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path));
return;
php_error_docref(NULL, E_WARNING, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path));
return FAILURE;
}
/* If there is no ID, use session module to create one */
@ -400,7 +406,7 @@ static void php_session_initialize(void) /* {{{ */
if (!PS(id)) {
php_session_abort();
zend_throw_error(NULL, "Failed to create session ID: %s (path: %s)", PS(mod)->s_name, PS(save_path));
return;
return FAILURE;
}
if (PS(use_cookies)) {
PS(send_cookie) = 1;
@ -419,7 +425,10 @@ static void php_session_initialize(void) /* {{{ */
}
}
php_session_reset_id();
if (php_session_reset_id() == FAILURE) {
php_session_abort();
return FAILURE;
}
/* Read data */
php_session_track_init();
@ -428,7 +437,7 @@ static void php_session_initialize(void) /* {{{ */
/* Some broken save handler implementation returns FAILURE for non-existent session ID */
/* It's better to raise error for this, but disabled error for better compatibility */
php_error_docref(NULL, E_WARNING, "Failed to read session data: %s (path: %s)", PS(mod)->s_name, PS(save_path));
return;
return FAILURE;
}
/* GC must be done after read */
@ -445,6 +454,7 @@ static void php_session_initialize(void) /* {{{ */
php_session_decode(val);
zend_string_release(val);
}
return SUCCESS;
}
/* }}} */
@ -519,7 +529,9 @@ static void php_session_normalize_vars() /* {{{ */
static PHP_INI_MH(OnUpdateSaveHandler) /* {{{ */
{
ps_module *tmp;
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
tmp = _php_find_ps_module(ZSTR_VAL(new_value));
@ -549,7 +561,9 @@ static PHP_INI_MH(OnUpdateSaveHandler) /* {{{ */
static PHP_INI_MH(OnUpdateSerializer) /* {{{ */
{
const ps_serializer *tmp;
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
tmp = _php_find_ps_serializer(ZSTR_VAL(new_value));
@ -577,6 +591,7 @@ static PHP_INI_MH(OnUpdateSerializer) /* {{{ */
static PHP_INI_MH(OnUpdateTransSid) /* {{{ */
{
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
if (!strncasecmp(ZSTR_VAL(new_value), "on", sizeof("on"))) {
PS(use_trans_sid) = (zend_bool) 1;
@ -588,8 +603,12 @@ static PHP_INI_MH(OnUpdateTransSid) /* {{{ */
}
/* }}} */
static PHP_INI_MH(OnUpdateSaveDir) /* {{{ */
{
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
/* Only do the safemode/open_basedir check at runtime */
if (stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) {
char *p;
@ -614,13 +633,16 @@ static PHP_INI_MH(OnUpdateSaveDir) /* {{{ */
}
}
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
return SUCCESS;
return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
/* }}} */
static PHP_INI_MH(OnUpdateName) /* {{{ */
{
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
/* Numeric session.name won't work at all */
if ((!ZSTR_LEN(new_value) || is_numeric_string(ZSTR_VAL(new_value), ZSTR_LEN(new_value), NULL, NULL, 0))) {
int err_type;
@ -638,16 +660,58 @@ static PHP_INI_MH(OnUpdateName) /* {{{ */
return FAILURE;
}
OnUpdateStringUnempty(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
return SUCCESS;
return OnUpdateStringUnempty(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
/* }}} */
static PHP_INI_MH(OnUpdateCookieLifetime) /* {{{ */
{
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
if (atol(ZSTR_VAL(new_value)) < 0) {
php_error_docref(NULL, E_WARNING, "CookieLifetime cannot be negative");
return FAILURE;
}
return OnUpdateLongGEZero(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
/* }}} */
static PHP_INI_MH(OnUpdateSessionLong) /* {{{ */
{
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
return OnUpdateLong(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
/* }}} */
static PHP_INI_MH(OnUpdateSessionString) /* {{{ */
{
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
/* }}} */
static PHP_INI_MH(OnUpdateSessionBool) /* {{{ */
{
SESSION_CHECK_OUTPUT_STATE;
SESSION_CHECK_ACTIVE_STATE;
return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
/* }}} */
static PHP_INI_MH(OnUpdateSidLength) /* {{{ */
{
zend_long val;
char *endptr = NULL;
SESSION_CHECK_OUTPUT_STATE;
SESSION_CHECK_ACTIVE_STATE;
val = ZEND_STRTOL(ZSTR_VAL(new_value), &endptr, 10);
if (endptr && (*endptr == '\0')
&& val >= 22 && val <= PS_MAX_SID_LENGTH) {
@ -666,6 +730,8 @@ static PHP_INI_MH(OnUpdateSidBits) /* {{{ */
zend_long val;
char *endptr = NULL;
SESSION_CHECK_OUTPUT_STATE;
SESSION_CHECK_ACTIVE_STATE;
val = ZEND_STRTOL(ZSTR_VAL(new_value), &endptr, 10);
if (endptr && (*endptr == '\0')
&& val >= 4 && val <=6) {
@ -680,6 +746,16 @@ static PHP_INI_MH(OnUpdateSidBits) /* {{{ */
/* }}} */
static PHP_INI_MH(OnUpdateLazyWrite) /* {{{ */
{
SESSION_CHECK_ACTIVE_STATE;
SESSION_CHECK_OUTPUT_STATE;
return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
}
/* }}} */
static PHP_INI_MH(OnUpdateRfc1867Freq) /* {{{ */
{
int tmp;
@ -703,29 +779,29 @@ static PHP_INI_MH(OnUpdateRfc1867Freq) /* {{{ */
/* {{{ PHP_INI
*/
PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateSaveDir,save_path, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateName, session_name, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateSaveDir, save_path, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateName, session_name, php_ps_globals, ps_globals)
PHP_INI_ENTRY("session.save_handler", "files", PHP_INI_ALL, OnUpdateSaveHandler)
STD_PHP_INI_BOOLEAN("session.auto_start", "0", PHP_INI_PERDIR, OnUpdateBool, auto_start, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.gc_probability", "1", PHP_INI_ALL, OnUpdateLong, gc_probability, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.gc_divisor", "100", PHP_INI_ALL, OnUpdateLong, gc_divisor, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.gc_maxlifetime", "1440", PHP_INI_ALL, OnUpdateLong, gc_maxlifetime, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.auto_start", "0", PHP_INI_PERDIR, OnUpdateBool, auto_start, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.gc_probability", "1", PHP_INI_ALL, OnUpdateSessionLong, gc_probability, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.gc_divisor", "100", PHP_INI_ALL, OnUpdateSessionLong, gc_divisor, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.gc_maxlifetime", "1440", PHP_INI_ALL, OnUpdateSessionLong, gc_maxlifetime, php_ps_globals, ps_globals)
PHP_INI_ENTRY("session.serialize_handler", "php", PHP_INI_ALL, OnUpdateSerializer)
STD_PHP_INI_ENTRY("session.cookie_lifetime", "0", PHP_INI_ALL, OnUpdateLong, cookie_lifetime, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cookie_path", "/", PHP_INI_ALL, OnUpdateString, cookie_path, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cookie_domain", "", PHP_INI_ALL, OnUpdateString, cookie_domain, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.cookie_secure", "", PHP_INI_ALL, OnUpdateBool, cookie_secure, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.cookie_httponly", "", PHP_INI_ALL, OnUpdateBool, cookie_httponly, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.use_cookies", "1", PHP_INI_ALL, OnUpdateBool, use_cookies, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.use_only_cookies", "1", PHP_INI_ALL, OnUpdateBool, use_only_cookies, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.use_strict_mode", "0", PHP_INI_ALL, OnUpdateBool, use_strict_mode, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.referer_check", "", PHP_INI_ALL, OnUpdateString, extern_referer_chk, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cache_limiter", "nocache", PHP_INI_ALL, OnUpdateString, cache_limiter, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cache_expire", "180", PHP_INI_ALL, OnUpdateLong, cache_expire, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cookie_lifetime", "0", PHP_INI_ALL, OnUpdateCookieLifetime,cookie_lifetime, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cookie_path", "/", PHP_INI_ALL, OnUpdateSessionString, cookie_path, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cookie_domain", "", PHP_INI_ALL, OnUpdateSessionString, cookie_domain, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cookie_secure", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_secure, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cookie_httponly", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_httponly, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.use_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_cookies, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.use_only_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_only_cookies, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.use_strict_mode", "0", PHP_INI_ALL, OnUpdateSessionBool, use_strict_mode, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.referer_check", "", PHP_INI_ALL, OnUpdateSessionString, extern_referer_chk, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cache_limiter", "nocache", PHP_INI_ALL, OnUpdateSessionString, cache_limiter, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cache_expire", "180", PHP_INI_ALL, OnUpdateSessionLong, cache_expire, php_ps_globals, ps_globals)
PHP_INI_ENTRY("session.use_trans_sid", "0", PHP_INI_ALL, OnUpdateTransSid)
PHP_INI_ENTRY("session.sid_length", "32", PHP_INI_ALL, OnUpdateSidLength)
PHP_INI_ENTRY("session.sid_bits_per_character", "4", PHP_INI_ALL, OnUpdateSidBits)
STD_PHP_INI_BOOLEAN("session.lazy_write", "1", PHP_INI_ALL, OnUpdateBool, lazy_write, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.lazy_write", "1", PHP_INI_ALL, OnUpdateLazyWrite, lazy_write, php_ps_globals, ps_globals)
/* Upload progress */
STD_PHP_INI_BOOLEAN("session.upload_progress.enabled",
@ -1236,7 +1312,7 @@ static void php_session_remove_cookie(void) {
efree(session_cookie);
}
static void php_session_send_cookie(void) /* {{{ */
static int php_session_send_cookie(void) /* {{{ */
{
smart_str ncookie = {0};
zend_string *date_fmt = NULL;
@ -1251,7 +1327,7 @@ static void php_session_send_cookie(void) /* {{{ */
} else {
php_error_docref(NULL, E_WARNING, "Cannot send session cookie - headers already sent");
}
return;
return FAILURE;
}
/* URL encode session_name and id because they might be user supplied */
@ -1309,6 +1385,8 @@ static void php_session_send_cookie(void) /* {{{ */
header, probably sent with setcookie() will be replaced! */
sapi_add_header_ex(estrndup(ZSTR_VAL(ncookie.s), ZSTR_LEN(ncookie.s)), ZSTR_LEN(ncookie.s), 0, 0);
smart_str_free(&ncookie);
return SUCCESS;
}
/* }}} */
@ -1354,7 +1432,8 @@ static void ppid2sid(zval *ppid) {
}
}
PHPAPI void php_session_reset_id(void) /* {{{ */
PHPAPI int php_session_reset_id(void) /* {{{ */
{
int module_number = PS(module_number);
zval *sid, *data, *ppid;
@ -1362,7 +1441,7 @@ PHPAPI void php_session_reset_id(void) /* {{{ */
if (!PS(id)) {
php_error_docref(NULL, E_WARNING, "Cannot set session ID - session ID is not initialized");
return;
return FAILURE;
}
if (PS(use_cookies) && PS(send_cookie)) {
@ -1419,10 +1498,12 @@ PHPAPI void php_session_reset_id(void) /* {{{ */
zend_string_release(sname);
php_url_scanner_add_session_var(PS(session_name), strlen(PS(session_name)), ZSTR_VAL(PS(id)), ZSTR_LEN(PS(id)), 1);
}
return SUCCESS;
}
/* }}} */
PHPAPI void php_session_start(void) /* {{{ */
PHPAPI int php_session_start(void) /* {{{ */
{
zval *ppid;
zval *data;
@ -1432,7 +1513,7 @@ PHPAPI void php_session_start(void) /* {{{ */
switch (PS(session_status)) {
case php_session_active:
php_error(E_NOTICE, "A session had already been started - ignoring session_start()");
return;
return FAILURE;
break;
case php_session_disabled:
@ -1441,7 +1522,7 @@ PHPAPI void php_session_start(void) /* {{{ */
PS(mod) = _php_find_ps_module(value);
if (!PS(mod)) {
php_error_docref(NULL, E_WARNING, "Cannot find save handler '%s' - session startup failed", value);
return;
return FAILURE;
}
}
value = zend_ini_string("session.serialize_handler", sizeof("session.serialize_handler") - 1, 0);
@ -1449,14 +1530,14 @@ PHPAPI void php_session_start(void) /* {{{ */
PS(serializer) = _php_find_ps_serializer(value);
if (!PS(serializer)) {
php_error_docref(NULL, E_WARNING, "Cannot find serialization handler '%s' - session startup failed", value);
return;
return FAILURE;
}
}
PS(session_status) = php_session_none;
/* fallthrough */
/* Fall through */
default:
case php_session_none:
default:
/* Setup internal flags */
PS(define_sid) = !PS(use_only_cookies); /* SID constant is defined when non-cookie ID is used */
PS(send_cookie) = PS(use_cookies) || PS(use_only_cookies);
@ -1532,36 +1613,50 @@ PHPAPI void php_session_start(void) /* {{{ */
PS(id) = NULL;
}
php_session_initialize();
php_session_cache_limiter();
if (php_session_initialize() == FAILURE
|| php_session_cache_limiter() == -2) {
PS(session_status) = php_session_none;
if (PS(id)) {
zend_string_release(PS(id));
PS(id) = NULL;
}
return FAILURE;
}
return SUCCESS;
}
/* }}} */
static void php_session_flush(int write) /* {{{ */
static int php_session_flush(int write) /* {{{ */
{
if (PS(session_status) == php_session_active) {
php_session_save_current_state(write);
PS(session_status) = php_session_none;
return SUCCESS;
}
return FAILURE;
}
/* }}} */
static void php_session_abort(void) /* {{{ */
static int php_session_abort(void) /* {{{ */
{
if (PS(session_status) == php_session_active) {
if (PS(mod_data) || PS(mod_user_implemented)) {
PS(mod)->s_close(&PS(mod_data));
}
PS(session_status) = php_session_none;
return SUCCESS;
}
return FAILURE;
}
/* }}} */
static void php_session_reset(void) /* {{{ */
static int php_session_reset(void) /* {{{ */
{
if (PS(session_status) == php_session_active) {
php_session_initialize();
if (PS(session_status) == php_session_active
&& php_session_initialize() == SUCCESS) {
return SUCCESS;
}
return FAILURE;
}
/* }}} */
@ -1581,7 +1676,7 @@ PHPAPI void session_adapt_url(const char *url, size_t urllen, char **new, size_t
* Userspace exported functions *
******************************** */
/* {{{ proto void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])
/* {{{ proto bool session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])
Set session cookie parameters */
static PHP_FUNCTION(session_set_cookie_params)
{
@ -1596,33 +1691,61 @@ static PHP_FUNCTION(session_set_cookie_params)
return;
}
if (PS(session_status) == php_session_active) {
php_error_docref(NULL, E_WARNING, "Cannot change session cookie parameters when session is active");
RETURN_FALSE;
}
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change session cookie parameters when headers already sent");
RETURN_FALSE;
}
convert_to_string_ex(lifetime);
ini_name = zend_string_init("session.cookie_lifetime", sizeof("session.cookie_lifetime") - 1, 0);
zend_alter_ini_entry(ini_name, Z_STR_P(lifetime), PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
if (zend_alter_ini_entry(ini_name, Z_STR_P(lifetime), PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
zend_string_release(ini_name);
RETURN_FALSE;
}
zend_string_release(ini_name);
if (path) {
ini_name = zend_string_init("session.cookie_path", sizeof("session.cookie_path") - 1, 0);
zend_alter_ini_entry(ini_name, path, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
if (zend_alter_ini_entry(ini_name, path, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
zend_string_release(ini_name);
RETURN_FALSE;
}
zend_string_release(ini_name);
}
if (domain) {
ini_name = zend_string_init("session.cookie_domain", sizeof("session.cookie_domain") - 1, 0);
zend_alter_ini_entry(ini_name, domain, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
if (zend_alter_ini_entry(ini_name, domain, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
zend_string_release(ini_name);
RETURN_FALSE;
}
zend_string_release(ini_name);
}
if (argc > 3) {
ini_name = zend_string_init("session.cookie_secure", sizeof("session.cookie_secure") - 1, 0);
zend_alter_ini_entry_chars(ini_name, secure ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
if (zend_alter_ini_entry_chars(ini_name, secure ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
zend_string_release(ini_name);
RETURN_FALSE;
}
zend_string_release(ini_name);
}
if (argc > 4) {
ini_name = zend_string_init("session.cookie_httponly", sizeof("session.cookie_httponly") - 1, 0);
zend_alter_ini_entry_chars(ini_name, httponly ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
if (zend_alter_ini_entry_chars(ini_name, httponly ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
zend_string_release(ini_name);
RETURN_FALSE;
}
zend_string_release(ini_name);
}
RETURN_TRUE;
}
/* }}} */
@ -1655,6 +1778,16 @@ static PHP_FUNCTION(session_name)
return;
}
if (name && PS(session_status) == php_session_active) {
php_error_docref(NULL, E_WARNING, "Cannot change session name when session is active");
RETURN_FALSE;
}
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change session name when headers already sent");
RETURN_FALSE;
}
RETVAL_STRING(PS(session_name));
if (name) {
@ -1676,6 +1809,16 @@ static PHP_FUNCTION(session_module_name)
return;
}
if (name && PS(session_status) == php_session_active) {
php_error_docref(NULL, E_WARNING, "Cannot change save handler module when session is active");
RETURN_FALSE;
}
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change save handler module when headers already sent");
RETURN_FALSE;
}
/* Set return_value to current module name */
if (PS(mod) && PS(mod)->s_name) {
RETVAL_STRING(PS(mod)->s_name);
@ -1702,7 +1845,7 @@ static PHP_FUNCTION(session_module_name)
}
/* }}} */
/* {{{ proto void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc, string create_sid)
/* {{{ proto bool session_set_save_handler(string open, string close, string read, string write, string destroy, string gc, string create_sid)
Sets user-level functions */
static PHP_FUNCTION(session_set_save_handler)
{
@ -1711,7 +1854,13 @@ static PHP_FUNCTION(session_set_save_handler)
zend_string *name;
zend_string *ini_name, *ini_val;
if (PS(session_status) != php_session_none) {
if (PS(session_status) == php_session_active) {
php_error_docref(NULL, E_WARNING, "Cannot change save handler when session is active");
RETURN_FALSE;
}
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change save handler when headers already sent");
RETURN_FALSE;
}
@ -1868,6 +2017,16 @@ static PHP_FUNCTION(session_save_path)
return;
}
if (PS(session_status) == php_session_active) {
php_error_docref(NULL, E_WARNING, "Cannot change save path when session is active");
RETURN_FALSE;
}
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change save path when headers already sent");
RETURN_FALSE;
}
RETVAL_STRING(PS(save_path));
if (name) {
@ -1894,6 +2053,11 @@ static PHP_FUNCTION(session_id)
return;
}
if (name && SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change session id when headers already sent");
RETURN_FALSE;
}
if (PS(id)) {
/* keep compatibility for "\0" characters ???
* see: ext/session/tests/session_id_error3.phpt */
@ -1932,7 +2096,7 @@ static PHP_FUNCTION(session_regenerate_id)
RETURN_FALSE;
}
if (SG(headers_sent) && PS(use_cookies)) {
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot regenerate session id - headers already sent");
RETURN_FALSE;
}
@ -2008,13 +2172,15 @@ static PHP_FUNCTION(session_regenerate_id)
if (PS(use_cookies)) {
PS(send_cookie) = 1;
}
php_session_reset_id();
if (php_session_reset_id() == FAILURE) {
RETURN_FALSE;
}
RETURN_TRUE;
}
/* }}} */
/* {{{ proto void session_create_id([string prefix])
/* {{{ proto string session_create_id([string prefix])
Generate new session ID. Intended for user save handlers. */
/* This is not used yet */
static PHP_FUNCTION(session_create_id)
@ -2079,6 +2245,16 @@ static PHP_FUNCTION(session_cache_limiter)
return;
}
if (PS(session_status) == php_session_active) {
php_error_docref(NULL, E_WARNING, "Cannot change cache limiter when session is active");
RETURN_FALSE;
}
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change cache limiter when headers already sent");
RETURN_FALSE;
}
RETVAL_STRING(PS(cache_limiter));
if (limiter) {
@ -2100,6 +2276,16 @@ static PHP_FUNCTION(session_cache_expire)
return;
}
if (PS(session_status) == php_session_active) {
php_error_docref(NULL, E_WARNING, "Cannot change cache expire when session is active");
RETURN_LONG(PS(cache_expire));
}
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot change cache expire when headers already sent");
RETURN_FALSE;
}
RETVAL_LONG(PS(cache_expire));
if (expires) {
@ -2136,15 +2322,15 @@ static PHP_FUNCTION(session_decode)
{
zend_string *str = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) {
return;
}
if (PS(session_status) != php_session_active) {
php_error_docref(NULL, E_WARNING, "Session is not active. You cannot decode session data");
RETURN_FALSE;
}
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) {
return;
}
if (php_session_decode(str) == FAILURE) {
RETURN_FALSE;
}
@ -2178,6 +2364,21 @@ static PHP_FUNCTION(session_start)
RETURN_FALSE;
}
if (PS(session_status) == php_session_active) {
php_error_docref(NULL, E_NOTICE, "A session had already been started - ignoring");
RETURN_TRUE;
}
/*
* TODO: To prevent unusable session with trans sid, actual output started status is
* required. i.e. There shouldn't be any outputs in output buffer, otherwise session
* module is unable to rewrite output.
*/
if (SG(headers_sent)) {
php_error_docref(NULL, E_WARNING, "Cannot start session when headers already sent");
RETURN_FALSE;
}
/* set options */
if (options) {
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(options), num_idx, str_idx, value) {
@ -2209,6 +2410,12 @@ static PHP_FUNCTION(session_start)
php_session_start();
if (PS(session_status) != php_session_active) {
IF_SESSION_VARS() {
zval *sess_var = Z_REFVAL(PS(http_session_vars));
SEPARATE_ARRAY(sess_var);
/* Clean $_SESSION. */
zend_hash_clean(Z_ARRVAL_P(sess_var));
}
RETURN_FALSE;
}
@ -2232,10 +2439,14 @@ static PHP_FUNCTION(session_destroy)
}
/* }}} */
/* {{{ proto void session_unset(void)
/* {{{ proto bool session_unset(void)
Unset all registered variables */
static PHP_FUNCTION(session_unset)
{
if (zend_parse_parameters_none() == FAILURE) {
return;
}
if (PS(session_status) != php_session_active) {
RETURN_FALSE;
}
@ -2247,6 +2458,7 @@ static PHP_FUNCTION(session_unset)
/* Clean $_SESSION. */
zend_hash_clean(Z_ARRVAL_P(sess_var));
}
RETURN_TRUE;
}
/* }}} */
@ -2275,27 +2487,51 @@ static PHP_FUNCTION(session_gc)
/* }}} */
/* {{{ proto void session_write_close(void)
/* {{{ proto bool session_write_close(void)
Write session data and end session */
static PHP_FUNCTION(session_write_close)
{
if (zend_parse_parameters_none() == FAILURE) {
return;
}
if (PS(session_status) != php_session_active) {
RETURN_FALSE;
}
php_session_flush(1);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto void session_abort(void)
/* {{{ proto bool session_abort(void)
Abort session and end session. Session data will not be written */
static PHP_FUNCTION(session_abort)
{
if (zend_parse_parameters_none() == FAILURE) {
return;
}
if (PS(session_status) != php_session_active) {
RETURN_FALSE;
}
php_session_abort();
RETURN_TRUE;
}
/* }}} */
/* {{{ proto void session_reset(void)
/* {{{ proto bool session_reset(void)
Reset session data from saved session data */
static PHP_FUNCTION(session_reset)
{
if (zend_parse_parameters_none() == FAILURE) {
return;
}
if (PS(session_status) != php_session_active) {
RETURN_FALSE;
}
php_session_reset();
RETURN_TRUE;
}
/* }}} */

View File

@ -11,6 +11,7 @@ session.serialize_handler=php
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
class handler {
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';

View File

@ -10,8 +10,8 @@ session.name=PHPSESSID
session.serialize_handler=php
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
class handler {
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';

View File

@ -11,6 +11,7 @@ session.save_handler=files
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
session_id("abtest");
session_start();
@ -18,7 +19,7 @@ session_start();
class a {
public $test = "hallo";
}
class b {
public $a;
function __construct(&$a) {

View File

@ -11,6 +11,7 @@ session.save_handler=files
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
session_id("abtest");

View File

@ -11,6 +11,7 @@ session.serialize_handler=php
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
class handler {
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';

View File

@ -10,8 +10,8 @@ session.name=PHPSESSID
session.serialize_handler=php
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
class handler {
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';

View File

@ -11,6 +11,7 @@ session.save_handler=files
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
session_id("abtest");
session_start();

View File

@ -11,6 +11,7 @@ session.save_handler=files
--FILE--
<?php
error_reporting(E_ALL);
ob_start();
session_id("abtest");

View File

@ -14,4 +14,5 @@ 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
Warning: session_start(): Failed to initialize storage module: user (path: ) in %s on line 3
ok

View File

@ -7,6 +7,7 @@ session.name=
<?php if(substr(PHP_OS, 0, 3) == "WIN") die("skip Not for Windows"); ?>
--FILE--
<?php
ob_start();
var_dump(session_name("foo"));
var_dump(session_name("bar"));

View File

@ -15,8 +15,6 @@ var_dump(session_destroy());
--EXPECTF--
bool(true)
Warning: session_module_name(): A session is active. You cannot change the session module's ini settings at this time in %s on line %d
Warning: session_destroy(): Session object destruction failed in %s on line %d
bool(false)
Warning: session_module_name(): Cannot change save handler module when session is active in %s on line 4
bool(true)
===DONE===

View File

@ -38,6 +38,7 @@ Content-Disposition: form-data; name="file2"; filename="file2.txt"
--FILE--
<?php
error_reporting(0);
ob_start();
session_start();
var_dump(session_id());
var_dump(basename(__FILE__) == $_POST[ini_get("session.upload_progress.name")]);
@ -57,7 +58,7 @@ Warning: Unknown: The session id is too long or contains illegal characters, val
Warning: Unknown: Failed to read session data: files (path: ) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0
string(%d) "%s"
string(%d) ""
bool(true)
array(2) {
[%u|b%"file1"]=>
@ -87,4 +88,50 @@ array(2) {
int(1)
}
}
NULL
array(5) {
["start_time"]=>
int(%d)
["content_length"]=>
int(469)
["bytes_processed"]=>
int(469)
["done"]=>
bool(true)
["files"]=>
array(2) {
[0]=>
array(7) {
["field_name"]=>
string(5) "file1"
["name"]=>
string(9) "file1.txt"
["tmp_name"]=>
string(%d) "%s"
["error"]=>
int(0)
["done"]=>
bool(true)
["start_time"]=>
int(%d)
["bytes_processed"]=>
int(1)
}
[1]=>
array(7) {
["field_name"]=>
string(5) "file2"
["name"]=>
string(9) "file2.txt"
["tmp_name"]=>
string(%d) "%s"
["error"]=>
int(0)
["done"]=>
bool(true)
["start_time"]=>
int(%d)
["bytes_processed"]=>
int(1)
}
}
}

View File

@ -59,12 +59,12 @@ array(1) {
["lazy_write"]=>
bool(false)
}
NULL
bool(true)
string(6) "testid"
*** With lazy_write ***
string(6) "testid"
bool(true)
NULL
bool(true)
string(6) "testid"
*** Cleanup ***
string(6) "testid"

View File

@ -64,13 +64,13 @@ string(0) ""
string(6) "testid"
bool(true)
bool(true)
NULL
bool(true)
string(32) "%s"
*** With lazy_write ***
string(32) "%s"
bool(true)
bool(true)
NULL
bool(true)
string(32) "%s"
*** Cleanup ***
string(32) "%s"

View File

@ -344,7 +344,7 @@ ob_end_flush();
<input type="text" name="test1"></input>
<input type="text" name="test2" />
</form>
NULL
bool(true)
*** Cleanup ***
bool(true)
string(6) "testid"

View File

@ -439,7 +439,7 @@ ob_end_flush();
<input type="text" name="test2" />
</form>
NULL
bool(true)
*** Cleanup ***
bool(true)
string(6) "testid"

View File

@ -32,6 +32,8 @@ int(180)
int(180)
int(1234567890)
bool(true)
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17
int(180)
bool(true)
int(180)

View File

@ -34,6 +34,8 @@ int(360)
int(360)
int(1234567890)
bool(true)
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17
int(180)
bool(true)
int(180)

View File

@ -33,6 +33,8 @@ int(360)
int(360)
int(1234567890)
bool(true)
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 18
int(180)
bool(true)
int(180)

View File

@ -38,6 +38,8 @@ string(3) "180"
int(180)
string(10) "1234567890"
bool(true)
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 19
int(1234567890)
string(10) "1234567890"
bool(true)

View File

@ -15,28 +15,28 @@ ob_start();
echo "*** Testing session_cache_limiter() : basic functionality ***\n";
var_dump(session_start());
var_dump(session_cache_limiter());
var_dump(session_cache_limiter("public"));
var_dump(session_cache_limiter());
var_dump(session_start());
var_dump(session_destroy());
var_dump(session_start());
var_dump(session_cache_limiter());
var_dump(session_cache_limiter("private"));
var_dump(session_cache_limiter());
var_dump(session_start());
var_dump(session_destroy());
var_dump(session_start());
var_dump(session_cache_limiter());
var_dump(session_cache_limiter("nocache"));
var_dump(session_cache_limiter());
var_dump(session_start());
var_dump(session_destroy());
var_dump(session_start());
var_dump(session_cache_limiter());
var_dump(session_cache_limiter("private_no_expire"));
var_dump(session_cache_limiter());
var_dump(session_start());
var_dump(session_destroy());
echo "Done";
@ -44,7 +44,6 @@ ob_end_flush();
?>
--EXPECTF--
*** Testing session_cache_limiter() : basic functionality ***
bool(true)
string(7) "nocache"
string(7) "nocache"
string(6) "public"
@ -64,5 +63,5 @@ string(7) "nocache"
string(7) "nocache"
string(17) "private_no_expire"
bool(true)
bool(true)
Done

View File

@ -32,10 +32,15 @@ ob_end_flush();
*** Testing session_cache_limiter() : variation ***
string(7) "nocache"
bool(true)
string(7) "nocache"
string(7) "nocache"
string(6) "public"
bool(true)
string(6) "public"
Done
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 15
bool(false)
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
bool(false)
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17
bool(false)
bool(true)
string(7) "nocache"
Done

View File

@ -31,10 +31,15 @@ ob_end_flush();
*** Testing session_cache_limiter() : variation ***
string(7) "nocache"
bool(true)
string(7) "nocache"
string(7) "nocache"
string(6) "public"
bool(true)
string(6) "public"
Done
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
bool(false)
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17
bool(false)
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 18
bool(false)
bool(true)
string(7) "nocache"
Done

View File

@ -31,9 +31,10 @@ ob_end_flush();
string(7) "nocache"
bool(true)
string(7) "nocache"
string(7) "nocache"
string(6) "public"
bool(true)
string(6) "public"
Done
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
bool(false)
string(7) "nocache"
bool(true)
string(7) "nocache"
Done

View File

@ -32,7 +32,7 @@ ob_end_flush();
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)

View File

@ -96,75 +96,122 @@ ob_end_flush();
*** Testing session_commit() : error functionality ***
-- Iteration 1 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 2 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 3 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 4 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 5 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 6 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 7 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 8 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 9 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 10 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 11 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 12 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 13 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 14 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 15 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 16 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 17 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 18 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 19 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 20 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 21 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 22 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 23 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 24 --
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
NULL
Done

View File

@ -30,12 +30,11 @@ ob_end_flush();
--EXPECTF--
*** Testing session_commit() : variation ***
bool(true)
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
Done

View File

@ -38,19 +38,19 @@ ob_end_flush();
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)

View File

@ -30,7 +30,7 @@ ob_end_flush();
*** Testing session_commit() : variation ***
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)

View File

@ -45,16 +45,16 @@ string(1) "0"
string(0) ""
bool(true)
string(4) "test"
NULL
bool(true)
string(4) "test"
bool(true)
string(1) "0"
string(4) "test"
NULL
bool(true)
string(4) "test"
bool(true)
string(4) "test"
NULL
bool(true)
string(4) "test"
bool(true)
bool(true)

View File

@ -49,19 +49,19 @@ string(0) ""
bool(true)
string(32) "%s"
bool(true)
NULL
bool(true)
bool(true)
string(32) "%s"
bool(true)
bool(true)
string(32) "%s"
bool(true)
bool(true)
string(32) "%s"
NULL
bool(true)
string(32) "%s"
bool(true)
bool(true)
string(32) "%s"
NULL
bool(true)
bool(true)
string(32) "%s"
bool(true)

View File

@ -35,7 +35,7 @@ Warning: session_encode(): Cannot encode non-existent session in %s on line %d
bool(false)
bool(true)
bool(false)
NULL
bool(true)
bool(false)
bool(true)
bool(false)

View File

@ -44,7 +44,7 @@ array(5) {
["httponly"]=>
bool(false)
}
NULL
bool(true)
array(5) {
["lifetime"]=>
int(3600)
@ -57,7 +57,7 @@ array(5) {
["httponly"]=>
bool(false)
}
NULL
bool(true)
array(5) {
["lifetime"]=>
int(1234567890)

View File

@ -0,0 +1,182 @@
--TEST--
Test ini_set() for session : basic functionality
--SKIPIF--
<?php include('skipif.inc'); ?>
--INI--
session.save_path=
session.name="PHPSESSID"
session.save_handler="files"
session.auto_start="0"
session.gc_probability="1"
session.gc_divisor="100"
session.gc_maxlifetime="1440"
session.serialize_handler="php"
session.cookie_path="/"
session.cookie_domain=""
session.cookie_secure="0"
session.cookie_httponly="0"
session.use_cookies="1"
session.use_only_cookies="1"
session.use_strict_mode="0"
session.referer_check=""
session.cache_limiter="nocache"
session.cache_expire="180"
session.use_trans_sid="0"
session.sid_length="32"
session.sid_bits_per_character="4"
session.lazy_write="1"
--FILE--
<?php
ob_start();
/*
* Prototype : string ini_set(string $name, string $value)
* Description : Set session ini
* Source code : ext/session/session.c
*/
echo "*** Testing ini_set() for session ini: basic functionality ***\n";
var_dump(ini_set("session.save_path", ""));
var_dump(ini_set("session.name", "PHPSESSID"));
var_dump(ini_set("session.save_handler", "files"));
var_dump(ini_set("session.auto_start", "0"));
var_dump(ini_set("session.gc_probability", "1"));
var_dump(ini_set("session.gc_divisor", "100"));
var_dump(ini_set("session.gc_maxlifetime", "1440"));
var_dump(ini_set("session.serialize_handler", "php"));
var_dump(ini_set("session.cookie_path", "/"));
var_dump(ini_set("session.cookie_domain", ""));
var_dump(ini_set("session.cookie_secure", "0"));
var_dump(ini_set("session.cookie_httponly", "0"));
var_dump(ini_set("session.use_cookies", "1"));
var_dump(ini_set("session.use_only_cookies", "1"));
var_dump(ini_set("session.use_strict_mode", "0"));
var_dump(ini_set("session.referer_check", ""));
var_dump(ini_set("session.cache_limiter", "nocache"));
var_dump(ini_set("session.cache_expire", "180"));
var_dump(ini_set("session.use_trans_sid", "0"));
var_dump(ini_set("session.sid_length", "32"));
var_dump(ini_set("session.sid_bits_per_character", "4"));
var_dump(ini_set("session.lazy_write", "1"));
session_start();
var_dump("session started");
var_dump(ini_set("session.save_path", ""));
var_dump(ini_set("session.name", "PHPSESSID"));
var_dump(ini_set("session.save_handler", "files"));
var_dump(ini_set("session.auto_start", "0"));
var_dump(ini_set("session.gc_probability", "1"));
var_dump(ini_set("session.gc_divisor", "100"));
var_dump(ini_set("session.gc_maxlifetime", "1440"));
var_dump(ini_set("session.serialize_handler", "php"));
var_dump(ini_set("session.cookie_path", "/"));
var_dump(ini_set("session.cookie_domain", ""));
var_dump(ini_set("session.cookie_secure", "0"));
var_dump(ini_set("session.cookie_httponly", "0"));
var_dump(ini_set("session.use_cookies", "1"));
var_dump(ini_set("session.use_only_cookies", "1"));
var_dump(ini_set("session.use_strict_mode", "0"));
var_dump(ini_set("session.referer_check", ""));
var_dump(ini_set("session.cache_limiter", "nocache"));
var_dump(ini_set("session.cache_expire", "180"));
var_dump(ini_set("session.use_trans_sid", "0"));
var_dump(ini_set("session.sid_length", "32"));
var_dump(ini_set("session.sid_bits_per_character", "4"));
var_dump(ini_set("session.lazy_write", "1"));
echo "Done";
ob_end_flush();
?>
--EXPECTF--
*** Testing ini_set() for session ini: basic functionality ***
string(0) ""
string(9) "PHPSESSID"
string(5) "files"
bool(false)
string(1) "1"
string(3) "100"
string(4) "1440"
string(3) "php"
string(1) "/"
string(0) ""
string(1) "0"
string(1) "0"
string(1) "1"
string(1) "1"
string(1) "0"
string(0) ""
string(7) "nocache"
string(3) "180"
string(1) "0"
string(2) "32"
string(1) "4"
string(1) "1"
string(15) "session started"
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 38
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 39
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 40
bool(false)
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 42
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 43
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 44
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 45
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 46
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 47
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 48
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 49
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 50
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 51
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 52
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 53
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 54
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 55
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 56
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 57
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 58
bool(false)
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 59
bool(false)
Done

View File

@ -38,14 +38,14 @@ ob_end_flush();
?>
--EXPECTF--
*** Testing session_module_name() : variation ***
string(%d) "%s"
string(5) "files"
string(4) "user"
Warning: Uncaught Exception: Stop...! in %s:%d
Warning: session_start(): Failed to initialize storage module: user (path: ) in %s on line 25
Fatal error: Uncaught Exception: Stop...! in %s:13
Stack trace:
#0 [internal function]: open('', 'PHPSESSID')
#1 %s(%d): session_start()
#1 %s(25): session_start()
#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
thrown in %s on line 13

View File

@ -51,7 +51,7 @@ array(3) {
["Guff"]=>
int(1234567890)
}
NULL
bool(true)
array(3) {
["Blah"]=>
string(12) "Hello World!"

View File

@ -84,7 +84,6 @@ $inputs = array(
/*24*/ $fp
);
session_start();
$iterator = 1;
foreach($inputs as $input) {
@ -93,7 +92,6 @@ foreach($inputs as $input) {
$iterator++;
};
session_destroy();
fclose($fp);
echo "Done";
ob_end_flush();

View File

@ -11,21 +11,25 @@ session.name=PHPSESSID
ob_start();
/*
/*
* Prototype : string session_save_path([string $path])
* Description : Get and/or set the current session save path
* Source code : ext/session/session.c
* Source code : ext/session/session.c
*/
echo "*** Testing session_save_path() : variation ***\n";
$directory = dirname(__FILE__);
var_dump(session_save_path());
var_dump(session_save_path($directory));
var_dump(session_save_path());
var_dump(session_start());
var_dump(session_save_path());
var_dump(session_save_path($directory));
var_dump(session_save_path());
var_dump(session_destroy());
var_dump(session_save_path());
echo "Done";
@ -34,11 +38,18 @@ ob_end_flush();
--EXPECTF--
*** Testing session_save_path() : variation ***
string(0) ""
bool(true)
string(0) ""
string(0) ""
string(%d) "%s"
string(%d) "%stests"
bool(true)
string(%d) "%s"
Done
Warning: session_save_path(): Cannot change save path when session is active in %s on line 19
bool(false)
Warning: session_save_path(): Cannot change save path when session is active in %s on line 20
bool(false)
Warning: session_save_path(): Cannot change save path when session is active in %s on line 21
bool(false)
bool(true)
string(%d) "%stests"
Done

View File

@ -51,9 +51,17 @@ var_dump(rmdir($sessions));
bool(true)
bool(true)
Warning: ini_set(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line %d
Warning: ini_set(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line 24
string(0) ""
Warning: session_start(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line %d
Warning: session_start(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line 26
Fatal error: session_start(): Failed to initialize storage module: files (path: ) in %s on line %d
Warning: session_start(): Failed to initialize storage module: files (path: ) in %s on line 26
bool(false)
string(0) ""
Warning: session_destroy(): Trying to destroy uninitialized session in %s on line 28
bool(false)
string(0) ""
bool(true)
Done

View File

@ -26,10 +26,11 @@ ob_end_flush();
?>
--EXPECTF--
*** Testing session_set_cookie_params() : basic functionality ***
NULL
bool(true)
NULL
bool(true)
NULL
Done
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 15
bool(false)
bool(true)
bool(true)
Done

View File

@ -100,207 +100,210 @@ ob_end_flush();
*** Testing session_set_cookie_params() : error functionality ***
-- Iteration 1 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 2 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 3 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 4 --
NULL
NULL
NULL
NULL
NULL
NULL
Warning: session_set_cookie_params(): CookieLifetime cannot be negative in %s on line 81
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 5 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 6 --
NULL
NULL
NULL
NULL
NULL
NULL
Warning: session_set_cookie_params(): CookieLifetime cannot be negative in %s on line 81
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 7 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 8 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 9 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 10 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 11 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 12 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 13 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 14 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 15 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 16 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 17 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 18 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 19 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 20 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 21 --
NULL
NULL
bool(true)
bool(true)
bool(true)
Warning: session_set_cookie_params() expects parameter 4 to be boolean, object given in %s on line 84
NULL
Warning: session_set_cookie_params() expects parameter 4 to be boolean, object given in %s on line %d
NULL
Warning: session_set_cookie_params() expects parameter 5 to be boolean, object given in %s on line %d
NULL
Warning: session_set_cookie_params() expects parameter 5 to be boolean, object given in %s on line 85
NULL
bool(true)
-- Iteration 22 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 23 --
NULL
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
-- Iteration 24 --
bool(true)
Warning: session_set_cookie_params() expects parameter 2 to be string, resource given in %s on line 82
NULL
Warning: session_set_cookie_params() expects parameter 2 to be string, resource given in %s on line %d
Warning: session_set_cookie_params() expects parameter 3 to be string, resource given in %s on line 83
NULL
Warning: session_set_cookie_params() expects parameter 3 to be string, resource given in %s on line %d
Warning: session_set_cookie_params() expects parameter 4 to be boolean, resource given in %s on line 84
NULL
Warning: session_set_cookie_params() expects parameter 4 to be boolean, resource given in %s on line %d
NULL
Warning: session_set_cookie_params() expects parameter 5 to be boolean, resource given in %s on line %d
NULL
Warning: session_set_cookie_params() expects parameter 5 to be boolean, resource given in %s on line 85
NULL
bool(true)
Done

View File

@ -20,11 +20,13 @@ echo "*** Testing session_set_cookie_params() : variation ***\n";
var_dump(ini_get("session.cookie_lifetime"));
var_dump(session_set_cookie_params(3600));
var_dump(ini_get("session.cookie_lifetime"));
var_dump(session_start());
var_dump(ini_get("session.cookie_lifetime"));
var_dump(session_set_cookie_params(1800));
var_dump(ini_get("session.cookie_lifetime"));
var_dump(session_destroy());
var_dump(ini_get("session.cookie_lifetime"));
var_dump(session_set_cookie_params(1234567890));
var_dump(ini_get("session.cookie_lifetime"));
@ -35,15 +37,16 @@ ob_end_flush();
--EXPECTF--
*** Testing session_set_cookie_params() : variation ***
string(4) "3600"
NULL
bool(true)
string(4) "3600"
bool(true)
string(4) "3600"
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 19
bool(false)
string(4) "3600"
bool(true)
string(4) "3600"
NULL
string(4) "1800"
bool(true)
string(4) "1800"
NULL
string(10) "1234567890"
Done

View File

@ -35,15 +35,16 @@ ob_end_flush();
--EXPECTF--
*** Testing session_set_cookie_params() : variation ***
string(5) "/path"
NULL
bool(true)
string(4) "/foo"
bool(true)
string(4) "/foo"
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
bool(false)
string(4) "/foo"
bool(true)
string(4) "/foo"
NULL
string(5) "/blah"
bool(true)
string(5) "/blah"
NULL
string(5) "/guff"
Done

View File

@ -35,15 +35,16 @@ ob_end_flush();
--EXPECTF--
*** Testing session_set_cookie_params() : variation ***
string(3) "foo"
NULL
bool(true)
string(4) "blah"
bool(true)
string(4) "blah"
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
bool(false)
string(4) "blah"
bool(true)
string(4) "blah"
NULL
string(4) "guff"
bool(true)
string(4) "guff"
NULL
string(3) "foo"
Done

View File

@ -35,15 +35,16 @@ ob_end_flush();
--EXPECTF--
*** Testing session_set_cookie_params() : variation ***
string(1) "1"
NULL
bool(true)
string(1) "0"
bool(true)
string(1) "0"
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
bool(false)
string(1) "0"
bool(true)
string(1) "0"
NULL
string(1) "1"
bool(true)
string(1) "1"
NULL
string(1) "0"
Done

View File

@ -35,15 +35,16 @@ ob_end_flush();
--EXPECTF--
*** Testing session_set_cookie_params() : variation ***
string(1) "1"
NULL
bool(true)
string(1) "0"
bool(true)
string(1) "0"
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
bool(false)
string(1) "0"
bool(true)
string(1) "0"
NULL
string(1) "1"
bool(true)
string(1) "1"
NULL
string(1) "0"
Done

View File

@ -50,7 +50,7 @@ Warning: SessionHandler::close(): Parent session handler is not open in %ssessio
Warning: session_start(): Failed to read session data: user (%s) in %ssession_set_save_handler_class_005.php on line %d
bool(false)
string(%d) "%s"
string(0) ""
string(4) "user"
array(0) {
}

View File

@ -55,7 +55,7 @@ Warning: SessionHandler::close(): Parent session handler is not open in %s on li
Warning: session_start(): Failed to read session data: user (%s) in %s on line %d
bool(false)
string(%d) "%s"
string(0) ""
string(5) "files"
string(4) "user"
int(2)

View File

@ -34,11 +34,11 @@ ob_end_flush();
--EXPECTF--
*** Testing session_set_save_handler() : error functionality ***
Warning: Uncaught Exception: Do something bad..! in %s:%d
Warning: session_start(): Failed to initialize storage module: user (path: ) in %s on line 23
Fatal error: Uncaught Exception: Do something bad..! in %s:13
Stack trace:
#0 [internal function]: open('', 'PHPSESSID')
#1 %s(%d): session_start()
#1 %s(23): session_start()
#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
thrown in %s on line 13

View File

@ -28,6 +28,8 @@ ob_end_flush();
*** Testing session_set_save_handler() : variation ***
bool(true)
Warning: session_set_save_handler(): Cannot change save handler when session is active in %s on line 17
bool(false)
bool(true)

View File

@ -19,6 +19,7 @@ echo "*** Testing session_set_save_handler() : variation ***\n";
require_once "save_handler.inc";
$path = dirname(__FILE__);
var_dump(session_status());
session_save_path($path);
var_dump(session_set_save_handler("open", "close", "read", "write", "destroy", "gc"));
var_dump(session_destroy());
@ -28,6 +29,10 @@ ob_end_flush();
--EXPECTF--
*** Testing session_set_save_handler() : variation ***
int(2)
Warning: session_save_path(): Cannot change save path when session is active in %s on line 16
Warning: session_set_save_handler(): Cannot change save handler when session is active in %s on line 17
bool(false)
bool(true)

View File

@ -65,7 +65,7 @@ array(3) {
}
Write [%s,%s,Blah|s:12:"Hello World!";Foo|b:0;Guff|i:1234567890;]
Close [%s,PHPSESSID]
NULL
bool(true)
Open [%s,PHPSESSID]
Read [%s,%s]
GC [0]

View File

@ -69,7 +69,7 @@ bool(true)
string(%d) "PHPT-%d"
Write [%s,PHPT-%d,]
Close [%s,PHPSESSID]
NULL
bool(true)
string(%d) "PHPT-%d"
*** With lazy_write ***
string(%d) "PHPT-%d"
@ -82,7 +82,7 @@ GC [0]
bool(true)
Write [%s,PHPT-%d,]
Close [%s,PHPSESSID]
NULL
bool(true)
string(%d) "PHPT-%d"
*** Cleanup ***
string(%d) "PHPT-%d"

View File

@ -29,16 +29,15 @@ ob_end_flush();
*** Testing session_start() : variation ***
bool(true)
Notice: A session had already been started - ignoring session_start() in %s on line %d
Notice: session_start(): A session had already been started - ignoring in %s on line 14
bool(true)
Notice: A session had already been started - ignoring session_start() in %s on line %d
Notice: session_start(): A session had already been started - ignoring in %s on line 15
bool(true)
Notice: A session had already been started - ignoring session_start() in %s on line %d
Notice: session_start(): A session had already been started - ignoring in %s on line 16
bool(true)
Notice: A session had already been started - ignoring session_start() in %s on line %d
Notice: session_start(): A session had already been started - ignoring in %s on line 17
bool(true)
Done

View File

@ -33,17 +33,16 @@ ob_end_flush();
--EXPECTF--
*** Testing session_start() : variation ***
bool(true)
NULL
bool(true)
NULL
bool(true)
NULL
bool(true)
NULL
bool(true)
NULL
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
Warning: session_destroy(): Trying to destroy uninitialized session in %s on line %d
Warning: session_destroy(): Trying to destroy uninitialized session in %s on line 23
bool(false)
Done

View File

@ -43,7 +43,7 @@ array(4) {
["age"]=>
int(6)
}
NULL
bool(true)
array(4) {
["colour"]=>
string(5) "green"

View File

@ -44,7 +44,7 @@ array(4) {
["age"]=>
int(6)
}
NULL
bool(true)
array(4) {
["colour"]=>
string(5) "green"

View File

@ -30,10 +30,9 @@ ob_end_flush();
*** Testing session_start() : variation ***
string(%d) "%s"
Notice: A session had already been started - ignoring session_start() in %s on line %d
Notice: session_start(): A session had already been started - ignoring in %s on line 14
bool(true)
string(%d) "%s"
bool(true)
string(0) ""
Done

View File

@ -33,7 +33,7 @@ array(1) {
["foo"]=>
string(12) "Hello World!"
}
NULL
bool(true)
array(0) {
}
bool(true)

View File

@ -96,75 +96,122 @@ ob_end_flush();
*** Testing session_unset() : error functionality ***
-- Iteration 1 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 2 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 3 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 4 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 5 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 6 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 7 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 8 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 9 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 10 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 11 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 12 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 13 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 14 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 15 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 16 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 17 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 18 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 19 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 20 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 21 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 22 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 23 --
bool(false)
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 24 --
bool(false)
Done
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
NULL
Done

View File

@ -32,7 +32,7 @@ ob_end_flush();
*** Testing session_unset() : variation ***
bool(false)
bool(true)
NULL
bool(true)
array(1) {
["foo"]=>
string(12) "Hello World!"

View File

@ -32,7 +32,7 @@ ob_end_flush();
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)

View File

@ -96,75 +96,122 @@ ob_end_flush();
*** Testing session_write_close() : error functionality ***
-- Iteration 1 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 2 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 3 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 4 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 5 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 6 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 7 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 8 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 9 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 10 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 11 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 12 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 13 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 14 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 15 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 16 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 17 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 18 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 19 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 20 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 21 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 22 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 23 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
-- Iteration 24 --
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
NULL
Done

View File

@ -30,12 +30,11 @@ ob_end_flush();
--EXPECTF--
*** Testing session_write_close() : variation ***
bool(true)
NULL
NULL
NULL
NULL
NULL
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
Done

View File

@ -38,22 +38,21 @@ ob_end_flush();
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)
bool(true)
Done

View File

@ -30,7 +30,7 @@ ob_end_flush();
*** Testing session_write_close() : variation ***
array(0) {
}
NULL
bool(true)
array(0) {
}
bool(true)

View File

@ -41,15 +41,15 @@ ob_end_flush();
string(0) ""
bool(true)
string(4) "test"
NULL
bool(true)
string(4) "test"
bool(true)
string(4) "test"
NULL
bool(true)
string(4) "test"
bool(true)
string(4) "test"
NULL
bool(true)
string(4) "test"
bool(true)
bool(true)