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

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
  • Tests/DependencyInjection
  • Component/HttpFoundation/Session/Storage
  • 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)
    0