diff --git a/src/Symfony/Component/Dotenv/Dotenv.php b/src/Symfony/Component/Dotenv/Dotenv.php index 26f1d9532d26b..98fbee52c03d7 100644 --- a/src/Symfony/Component/Dotenv/Dotenv.php +++ b/src/Symfony/Component/Dotenv/Dotenv.php @@ -446,12 +446,12 @@ private function resolveVariables(string $value) } $name = $matches['name']; - if (isset($this->values[$name])) { + if (isset($_ENV[$name])) { + $value = $_ENV[$name]; + } elseif (isset($this->values[$name])) { $value = $this->values[$name]; } elseif (isset($_SERVER[$name]) && 0 !== strpos($name, 'HTTP_')) { $value = $_SERVER[$name]; - } elseif (isset($_ENV[$name])) { - $value = $_ENV[$name]; } else { $value = (string) getenv($name); } diff --git a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php index 0efdf17cc308a..340f83ee39cf1 100644 --- a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php +++ b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php @@ -430,4 +430,14 @@ public function testDoNotUsePutenv() $this->assertSame('no', $_ENV['TEST_USE_PUTENV']); $this->assertFalse(getenv('TEST_USE_PUTENV')); } + + public function testGetVariablesValueFromEnvFirst() + { + $_ENV['APP_ENV'] = 'prod'; + $dotenv = new Dotenv(true); + $test = "APP_ENV=dev\nTEST=foo_\${APP_ENV}"; + $values = $dotenv->parse($test); + + $this->assertSame('foo_prod', $values['TEST']); + } }