@@ -102,12 +102,16 @@ class NativeSessionStorage implements SessionStorageInterface
102
102
*/
103
103
public function __construct (array $ options = array (), $ handler = null , MetadataBag $ metaBag = null )
104
104
{
105
+ $ cannotOverrideSessionParameters = \PHP_VERSION_ID >= 50400 && \PHP_SESSION_ACTIVE === session_status ();
106
+
105
107
$ this ->setMetadataBag ($ metaBag );
108
+ $ this ->setSaveHandler ($ handler , !$ cannotOverrideSessionParameters );
106
109
107
- if (\ PHP_VERSION_ID >= 50400 && \ PHP_SESSION_ACTIVE === session_status () ) {
110
+ if ($ cannotOverrideSessionParameters ) {
108
111
return ;
109
112
}
110
113
114
+
111
115
$ options += array (
112
116
// disable by default because it's managed by HeaderBag (if used)
113
117
'cache_limiter ' => '' ,
@@ -121,7 +125,6 @@ public function __construct(array $options = array(), $handler = null, MetadataB
121
125
}
122
126
123
127
$ this ->setOptions ($ options );
124
- $ this ->setSaveHandler ($ handler );
125
128
}
126
129
127
130
/**
@@ -383,10 +386,11 @@ public function setOptions(array $options)
383
386
* @see http://github.com/drak/NativeSession
384
387
*
385
388
* @param AbstractProxy|NativeSessionHandler|\SessionHandlerInterface|null $saveHandler
389
+ * @param bool $updatePhpHandler
386
390
*
387
391
* @throws \InvalidArgumentException
388
392
*/
389
- public function setSaveHandler ($ saveHandler = null )
393
+ public function setSaveHandler ($ saveHandler = null , bool $ updatePhpHandler = true )
390
394
{
391
395
if (!$ saveHandler instanceof AbstractProxy &&
392
396
!$ saveHandler instanceof NativeSessionHandler &&
@@ -408,7 +412,7 @@ public function setSaveHandler($saveHandler = null)
408
412
}
409
413
$ this ->saveHandler = $ saveHandler ;
410
414
411
- if ($ this ->saveHandler instanceof \SessionHandlerInterface) {
415
+ if ($ this ->saveHandler instanceof \SessionHandlerInterface && $ updatePhpHandler ) {
412
416
if (\PHP_VERSION_ID >= 50400 ) {
413
417
session_set_save_handler ($ this ->saveHandler , false );
414
418
} else {
0 commit comments