@@ -102,9 +102,12 @@ 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
@@ -121,7 +124,6 @@ public function __construct(array $options = array(), $handler = null, MetadataB
121
124
}
122
125
123
126
$ this ->setOptions ($ options );
124
- $ this ->setSaveHandler ($ handler );
125
127
}
126
128
127
129
/**
@@ -383,10 +385,11 @@ public function setOptions(array $options)
383
385
* @see http://github.com/drak/NativeSession
384
386
*
385
387
* @param AbstractProxy|NativeSessionHandler|\SessionHandlerInterface|null $saveHandler
388
+ * @param bool $updatePhpHandler
386
389
*
387
390
* @throws \InvalidArgumentException
388
391
*/
389
- public function setSaveHandler ($ saveHandler = null )
392
+ public function setSaveHandler ($ saveHandler = null , bool $ updatePhpHandler = true )
390
393
{
391
394
if (!$ saveHandler instanceof AbstractProxy &&
392
395
!$ saveHandler instanceof NativeSessionHandler &&
@@ -408,7 +411,7 @@ public function setSaveHandler($saveHandler = null)
408
411
}
409
412
$ this ->saveHandler = $ saveHandler ;
410
413
411
- if ($ this ->saveHandler instanceof \SessionHandlerInterface) {
414
+ if ($ this ->saveHandler instanceof \SessionHandlerInterface && $ updatePhpHandler ) {
412
415
if (\PHP_VERSION_ID >= 50400 ) {
413
416
session_set_save_handler ($ this ->saveHandler , false );
414
417
} else {
0 commit comments