From 69ad6060d876cc22271073382be8237a3d9c5da6 Mon Sep 17 00:00:00 2001 From: Younes ENNAJI Date: Tue, 25 Nov 2025 03:36:21 +0100 Subject: [PATCH] [DependencyInjection] Fix `query_string` env processor for URLs without query string --- .../DependencyInjection/EnvVarProcessor.php | 2 +- .../Tests/EnvVarProcessorTest.php | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php index 07fae987198e8..b5bf0b22c636b 100644 --- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php +++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php @@ -325,7 +325,7 @@ public function getEnv(string $prefix, string $name, \Closure $getEnv): mixed } if ('query_string' === $prefix) { - $queryString = parse_url($env, \PHP_URL_QUERY) ?: $env; + $queryString = parse_url($env, \PHP_URL_QUERY) ?: (parse_url($env, \PHP_URL_SCHEME) ? '' : $env); parse_str($queryString, $result); return $result; diff --git a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php index 3677a4e173f7c..182d335e52342 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php @@ -982,4 +982,24 @@ public static function provideGetEnvDefined(): iterable yield 'Null' => [false, fn () => null]; yield 'Env var not defined' => [false, fn () => throw new EnvNotFoundException()]; } + + /** + * @dataProvider provideQueryStringScenarios + */ + public function testQueryStringEnvVarProcessor($envValue, $expectedResult) + { + $processor = new EnvVarProcessor(new Container()); + + $result = $processor->getEnv('query_string', 'MY_VAR', fn () => $envValue); + + $this->assertSame($expectedResult, $result); + } + + public static function provideQueryStringScenarios(): iterable + { + yield 'url_without_query' => ['https://example.com', []]; + yield 'url_with_empty_query' => ['https://example.com?', []]; + yield 'url_with_query' => ['https://example.com?foo=bar&baz=123', ['foo' => 'bar', 'baz' => '123']]; + yield 'raw_query_string' => ['foo=bar&test=1', ['foo' => 'bar', 'test' => '1']]; + } }