diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php index c85ccf5d066b4..a7e1c51980563 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php @@ -195,6 +195,7 @@ class_exists(WorkflowEvents::class) ? WorkflowEvents::ALIASES : [] tagged_iterator('container.env_var_loader'), ]) ->tag('container.env_var_processor') + ->tag('kernel.reset', ['method' => 'reset']) ->set('slugger', AsciiSlugger::class) ->args([ diff --git a/src/Symfony/Component/DependencyInjection/Container.php b/src/Symfony/Component/DependencyInjection/Container.php index cd7105546f250..a028de7eea42f 100644 --- a/src/Symfony/Component/DependencyInjection/Container.php +++ b/src/Symfony/Component/DependencyInjection/Container.php @@ -290,6 +290,14 @@ public function reset(): void $this->envCache = $this->services = $this->factories = $this->privates = []; } + /** + * @internal + */ + public function resetEnvCache(): void + { + $this->envCache = []; + } + /** * Gets all service ids. * diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php index 62da6e8104de3..fe81341e6cab6 100644 --- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php +++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php @@ -374,5 +374,9 @@ public function reset(): void { $this->loadedVars = []; $this->loaders = $this->originalLoaders; + + if ($this->container instanceof Container) { + $this->container->resetEnvCache(); + } } }