Skip to content

Commit 0b79956

Browse files
committed
Error message if old PERSISTENT=n flag is used in session.save_path
1 parent 6d8f5d5 commit 0b79956

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

Diff for: package.xml

+1
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ Fixes
117117
<file role='test' name='rescode.phpt'/>
118118
<file role='test' name='session_badconf_emptyprefix.phpt'/>
119119
<file role='test' name='session_badconf_locktime.phpt'/>
120+
<file role='test' name='session_badconf_persistent.phpt'/>
120121
<file role='test' name='session_badconf_prefix.phpt'/>
121122
<file role='test' name='session_badconf_servers.phpt'/>
122123
<file role='test' name='session_badconf_servers-php72.phpt'/>

Diff for: php_memcached_session.c

+7
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,13 @@ PS_OPEN_FUNC(memcached)
319319

320320
memcached_server_list_st servers;
321321

322+
// Fail on incompatible PERSISTENT identifier (removed in php-memcached 3.0)
323+
if (strstr(save_path, "PERSISTENT=")) {
324+
php_error_docref(NULL, E_WARNING, "failed to parse session.save_path: PERSISTENT is replaced by memcached.sess_persistent = On");
325+
PS_SET_MOD_DATA(NULL);
326+
return FAILURE;
327+
}
328+
322329
// First parse servers
323330
servers = memcached_servers_parse(save_path);
324331

Diff for: tests/session_badconf_persistent.phpt

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
--TEST--
2+
Session bad configurations, persistent
3+
--SKIPIF--
4+
<?php
5+
include dirname(__FILE__) . "/skipif.inc";
6+
if (!Memcached::HAVE_SESSION) print "skip";
7+
?>
8+
--INI--
9+
session.save_handler = "memcached"
10+
session.save_path = "PERSISTENT=1 hello:11211,world:11211"
11+
12+
--FILE--
13+
<?php
14+
ob_start();
15+
16+
session_start();
17+
session_write_close();
18+
19+
echo "OK";
20+
21+
--EXPECTF--
22+
Warning: session_start(): failed to parse session.save_path: PERSISTENT is replaced by memcached.sess_persistent = On in %s on line %d
23+
24+
Warning: session_start(): Failed to initialize storage module: memcached (path: PERSISTENT=1 %s) in %s on line %d
25+
OK

0 commit comments

Comments
 (0)