8000 [FrameworkBundle] Fix wiring session.handler when handler_id is null · symfony/symfony@37eba66 · GitHub
[go: up one dir, main page]

Skip to content

Commit 37eba66

Browse files
[FrameworkBundle] Fix wiring session.handler when handler_id is null
1 parent 6fe1067 commit 37eba66

File tree

4 files changed

+13
-18
lines changed

4 files changed

+13
-18
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,15 +1178,7 @@ private function registerSessionConfiguration(array $config, ContainerBuilder $c
11781178

11791179
// session handler (the internal callback registered with PHP session management)
11801180
if (null === $config['handler_id']) {
1181-
// Set the handler class to be null
1182-
if ($container->hasDefinition('session.storage.native')) {
1183-
$container->getDefinition('session.storage.native')->replaceArgument(1, null);
1184-
$container->getDefinition('session.storage.php_bridge')->replaceArgument(0, null);
1185-
} else {
1186-
$container->getDefinition('session.storage.factory.native')->replaceArgument(1, null);
1187-
$container->getDefinition('session.storage.factory.php_bridge')->replaceArgument(0, null);
1188-
}
1189-
1181+
$config['save_path'] = null;
11901182
$container->setAlias('session.handler', 'session.handler.native_file');
11911183
} else {
11921184
$container->resolveEnvPlaceholders($config['handler_id'], null, $usedEnvs);

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -648,8 +648,7 @@ public function testNullSessionHandler()
648648
$container = $this->createContainerFromFile('session');
649649

650650
$this->assertTrue($container->hasAlias(SessionInterface::class), '->registerSessionConfiguration() loads session.xml');
651-
$this->assertNull($container->getDefinition('session.storage.factory.native')->getArgument(1));
652-
$this->assertNull($container->getDefinition('session.storage.factory.php_bridge')->getArgument(0));
651+
$this->assertNull($container->getParameter('session.save_path'));
653652
$this->assertSame('session.handler.native_file', (string) $container->getAlias('session.handler'));
654653

655654
$expected = ['session_factory', 'session', 'initialized_session', 'logger', 'session_collector'];
@@ -667,8 +666,7 @@ public function testNullSessionHandlerLegacy()
667666
$container = $this->createContainerFromFile('session_legacy');
668667

669668
$this->assertTrue($container->hasAlias(SessionInterface::class), '->registerSessionConfiguration() loads session.xml');
670-
$this->assertNull($container->getDefinition('session.storage.native')->getArgument(1));
671-
$this->assertNull($container->getDefinition('session.storage.php_bridge')->getArgument(0));
669+
$this->assertNull($container->getParameter('session.save_path'));
672670
$this->assertSame('session.handler.native_file', (string) $container->getAlias('session.handler'));
673671

674672
$expected = ['session_factory', 'session', 'initialized_session', 'logger', 'session_collector'];

src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ public function __construct(string $savePath = null)
4949
throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $baseDir));
5050
}
5151

52-
ini_set('session.save_path', $savePath);
53-
ini_set('session.save_handler', 'files');
52+
if ($savePath !== \ini_get('session.save_path')) {
53+
ini_set('session.save_path', $savePath);
54+
}
55+
if ('files' !== \ini_get('session.save_handler')) {
56+
ini_set('session.save_handler', 'files');
57+
}
5458
}
5559
}

src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -455,9 +455,10 @@ public function setOptions(array $options)
455455
*/
456456
public function setSaveHandler($saveHandler = null)
457457
{
458-
if (!$saveHandler instanceof AbstractProxy &&
459-
!$saveHandler instanceof \SessionHandlerInterface &&
460-
null !== $saveHandler) {
458+
if (!$saveHandler instanceof AbstractProxy
459+
&& !$saveHandler instanceof \SessionHandlerInterface
460+
&& null !== $saveHandler
461+
) {
461462
throw new \InvalidArgumentException('Must be instance of AbstractProxy; implement \SessionHandlerInterface; or be null.');
462463
}
463464

0 commit comments

Comments
 (0)
0