diff --git a/src/Symfony/Component/Dotenv/Dotenv.php b/src/Symfony/Component/Dotenv/Dotenv.php index 41b83f57a64d1..025206326a8bb 100644 --- a/src/Symfony/Component/Dotenv/Dotenv.php +++ b/src/Symfony/Component/Dotenv/Dotenv.php @@ -66,8 +66,8 @@ public function load($path/*, ...$paths*/) */ public function populate($values) { - $loadedVars = array_flip(explode(',', getenv('SYMFONY_DOTENV_VARS'))); - unset($loadedVars['']); + $updateLoadedVars = false; + $loadedVars = array_flip(explode(',', isset($_SERVER['SYMFONY_DOTENV_VARS']) ? $_SERVER['SYMFONY_DOTENV_VARS'] : (isset($_ENV['SYMFONY_DOTENV_VARS']) ? $_ENV['SYMFONY_DOTENV_VARS'] : ''))); foreach ($values as $name => $value) { $notHttpName = 0 !== strpos($name, 'HTTP_'); @@ -82,14 +82,15 @@ public function populate($values) $_SERVER[$name] = $value; } - $loadedVars[$name] = true; + if (!isset($loadedVars[$name])) { + $loadedVars[$name] = $updateLoadedVars = true; + } } - if ($loadedVars) { + if ($updateLoadedVars) { + unset($loadedVars['']); $loadedVars = implode(',', array_keys($loadedVars)); - putenv("SYMFONY_DOTENV_VARS=$loadedVars"); - $_ENV['SYMFONY_DOTENV_VARS'] = $loadedVars; - $_SERVER['SYMFONY_DOTENV_VARS'] = $loadedVars; + putenv('SYMFONY_DOTENV_VARS='.$_ENV['SYMFONY_DOTENV_VARS'] = $_SERVER['SYMFONY_DOTENV_VARS'] = $loadedVars); } } diff --git a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php index 7caa75f06622b..4492c8e9e08e0 100644 --- a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php +++ b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php @@ -268,7 +268,7 @@ public function testMemorizingLoadedVarsNamesInSpecialVar() public function testOverridingEnvVarsWithNamesMemorizedInSpecialVar() { - putenv('SYMFONY_DOTENV_VARS=FOO,BAR,BAZ'); + putenv('SYMFONY_DOTENV_VARS='.$_SERVER['SYMFONY_DOTENV_VARS'] = 'FOO,BAR,BAZ'); putenv('FOO=foo'); putenv('BAR=bar');
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: