xref: /PHP-8.0/ext/session/tests/bug32330.phpt (revision d5e20662)
1--TEST--
2Bug #32330 (session_destroy, "Failed to initialize storage module", custom session handler)
3--SKIPIF--
4<?php include('skipif.inc'); ?>
5--INI--
6session.use_trans_sid=0
7session.use_cookies=1
8session.name=sid
9session.save_path="{TMP}"
10session.gc_probability=1
11session.gc_divisor=1
12session.save_handler=files
13--FILE--
14<?php
15error_reporting(E_ALL);
16
17function sOpen($path, $name)
18{
19    echo "open: path = {$path}, name = {$name}\n";
20    return TRUE;
21}
22
23function sClose()
24{
25    echo "close\n";
26    return TRUE;
27}
28
29function sRead($id)
30{
31    echo "read: id = {$id}\n";
32    return '';
33}
34
35function sWrite($id, $data)
36{
37    echo "write: id = {$id}, data = {$data}\n";
38    return TRUE;
39}
40
41function sDestroy($id)
42{
43    echo "destroy: id = {$id}\n";
44    return TRUE;
45}
46
47function sGC($maxlifetime)
48{
49    echo "gc: maxlifetime = {$maxlifetime}\n";
50    return TRUE;
51}
52
53session_set_save_handler( 'sOpen', 'sClose', 'sRead', 'sWrite', 'sDestroy', 'sGC' );
54
55// without output buffering, the debug messages will cause all manner of warnings
56ob_start();
57
58session_start();
59$_SESSION['A'] = 'B';
60session_write_close();
61
62session_start();
63$_SESSION['C'] = 'D';
64session_destroy();
65
66session_start();
67$_SESSION['E'] = 'F';
68// Don't try to destroy this time!
69
70?>
71--EXPECTF--
72open: path = %s, name = sid
73read: id = %s
74gc: maxlifetime = %d
75write: id = %s, data = A|s:1:"B";
76close
77open: path = %s, name = sid
78read: id = %s
79gc: maxlifetime = %d
80destroy: id = %s
81close
82open: path = %s, name = sid
83read: id = %s
84gc: maxlifetime = %d
85write: id = %s, data = E|s:1:"F";
86close
87