Skip to content

Commit 5b12b46

Browse files
morozovnikic
authored andcommitted
Fixed bug #74936 - session_*() functions trigger a warning in read mode when the session is active
1 parent a624ded commit 5b12b46

10 files changed

+34
-29
lines changed

NEWS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ PHP NEWS
55
- Session:
66
. Fixed bug #74892 (Url Rewriting (trans_sid) not working on urls that start
77
with "#"). (Andrew Nester)
8+
. Fixed bug #74936 (session_cache_expire/cache_limiter/save_path() trigger a
9+
warning in read mode). (morozov)
10+
11+
- SPL:
12+
. Fixed bug #74669 (Unserialize ArrayIterator broken). (Andrew Nester)
813

914
20 Jul 2017, PHP 7.2.0beta1
1015

ext/session/session.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1999,7 +1999,7 @@ static PHP_FUNCTION(session_save_path)
19991999
return;
20002000
}
20012001

2002-
if (PS(session_status) == php_session_active) {
2002+
if (name && PS(session_status) == php_session_active) {
20032003
php_error_docref(NULL, E_WARNING, "Cannot change save path when session is active");
20042004
RETURN_FALSE;
20052005
}
@@ -2227,7 +2227,7 @@ static PHP_FUNCTION(session_cache_limiter)
22272227
return;
22282228
}
22292229

2230-
if (PS(session_status) == php_session_active) {
2230+
if (limiter && PS(session_status) == php_session_active) {
22312231
php_error_docref(NULL, E_WARNING, "Cannot change cache limiter when session is active");
22322232
RETURN_FALSE;
22332233
}
@@ -2258,7 +2258,7 @@ static PHP_FUNCTION(session_cache_expire)
22582258
return;
22592259
}
22602260

2261-
if (PS(session_status) == php_session_active) {
2261+
if (expires && PS(session_status) == php_session_active) {
22622262
php_error_docref(NULL, E_WARNING, "Cannot change cache expire when session is active");
22632263
RETURN_LONG(PS(cache_expire));
22642264
}

ext/session/tests/bug74936.phpt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
Bug #74936 session_cache_expire() triggers a warning in read mode.
3+
--SKIPIF--
4+
<?php
5+
include('skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
session_start();
11+
var_dump(session_cache_expire());
12+
var_dump(session_cache_limiter());
13+
var_dump(session_save_path());
14+
?>
15+
===DONE===
16+
--EXPECT--
17+
int(180)
18+
string(7) "nocache"
19+
string(0) ""
20+
===DONE===

ext/session/tests/session_cache_expire_basic.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ int(180)
3232
int(180)
3333
int(1234567890)
3434
bool(true)
35-
36-
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17
3735
int(180)
3836
bool(true)
3937
int(180)

ext/session/tests/session_cache_expire_variation1.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ int(360)
3434
int(360)
3535
int(1234567890)
3636
bool(true)
37-
38-
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17
3937
int(180)
4038
bool(true)
4139
int(180)

ext/session/tests/session_cache_expire_variation2.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ int(360)
3333
int(360)
3434
int(1234567890)
3535
bool(true)
36-
37-
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 18
3836
int(180)
3937
bool(true)
4038
int(180)

ext/session/tests/session_cache_expire_variation3.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ string(3) "180"
3838
int(180)
3939
string(10) "1234567890"
4040
bool(true)
41-
42-
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 19
4341
int(1234567890)
4442
string(10) "1234567890"
4543
bool(true)

ext/session/tests/session_cache_limiter_variation1.phpt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,11 @@ ob_end_flush();
3232
*** Testing session_cache_limiter() : variation ***
3333
string(7) "nocache"
3434
bool(true)
35-
36-
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 15
37-
bool(false)
35+
string(7) "nocache"
3836

3937
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
4038
bool(false)
41-
42-
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17
43-
bool(false)
39+
string(7) "nocache"
4440
bool(true)
4541
string(7) "nocache"
4642
Done

ext/session/tests/session_cache_limiter_variation2.phpt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,11 @@ ob_end_flush();
3131
*** Testing session_cache_limiter() : variation ***
3232
string(7) "nocache"
3333
bool(true)
34-
35-
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
36-
bool(false)
34+
string(7) "nocache"
3735

3836
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17
3937
bool(false)
40-
41-
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 18
42-
bool(false)
38+
string(7) "nocache"
4339
bool(true)
4440
string(7) "nocache"
4541
Done

ext/session/tests/session_save_path_variation1.phpt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,11 @@ string(0) ""
4242
string(0) ""
4343
string(%d) "%stests"
4444
bool(true)
45-
46-
Warning: session_save_path(): Cannot change save path when session is active in %s on line 19
47-
bool(false)
45+
string(%d) "%stests"
4846

4947
Warning: session_save_path(): Cannot change save path when session is active in %s on line 20
5048
bool(false)
51-
52-
Warning: session_save_path(): Cannot change save path when session is active in %s on line 21
53-
bool(false)
49+
string(%d) "%stests"
5450
bool(true)
5551
string(%d) "%stests"
5652
Done

0 commit comments

Comments
 (0)