Skip to content

Commit e23be58

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

File tree

5 files changed

+21
-21
lines changed

5 files changed

+21
-21
lines changed

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,16 +1178,8 @@ 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-
1190-
$container->setAlias('session.handler', 'session.handler.native_file');
1181+
$config['save_path'] = null;
1182+
$container->setAlias('session.handler', 'session.handler.native');
11911183
} else {
11921184
$container->resolveEnvPlaceholders($config['handler_id'], null, $usedEnvs);
11931185

src/Symfony/Bundle/FrameworkBundle/Resources/config/session.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,11 @@
133133
])
134134
->deprecate('symfony/framework-bundle', '5.3', 'The "%service_id%" service is deprecated, use "session.storage.factory.mock_file" instead.')
135135

136+
->set('session.handler.native', StrictSessionHandler::class)
137+
->args([
138+
inline_service(\SessionHandler::class),
139+
])
140+
136141
->set('session.handler.native_file', StrictSessionHandler::class)
137142
->args([
138143
inline_service(NativeFileSessionHandler::class)

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -648,9 +648,8 @@ 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));
653-
$this->assertSame('session.handler.native_file', (string) $container->getAlias('session.handler'));
651+
$this->assertNull($container->getParameter('session.save_path'));
652+
$this->assertSame('session.handler.native', (string) $container->getAlias('session.handler'));
654653

655654
$expected = ['session_factory', 'session', 'initialized_session', 'logger', 'session_collector'];
656655
$this->assertEquals($expected, array_keys($container->getDefinition('session_listener')->getArgument(0)->getValues()));
@@ -667,9 +666,8 @@ 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));
672-
$this->assertSame('session.handler.native_file', (string) $container->getAlias('session.handler'));
669+
$this->assertNull($container->getParameter('session.save_path'));
670+
$this->assertSame('session.handler.native', (string) $container->getAlias('session.handler'));
673671

674672
$expected = ['session_factory', 'session', 'initialized_session', 'logger', 'session_collector'];
675673
$this->assertEquals($expected, array_keys($container->getDefinition('session_listener')->getArgument(0)->getValues()));

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy