From 21a909a189c1f42767c606c0e7607e4af54d8f11 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 8 Nov 2018 09:45:28 +0100 Subject: [PATCH] [Dotenv] dont use getenv() to read SYMFONY_DOTENV_VARS --- src/Symfony/Component/Dotenv/Dotenv.php | 15 ++++++++------- src/Symfony/Component/Dotenv/Tests/DotenvTest.php | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Symfony/Component/Dotenv/Dotenv.php b/src/Symfony/Component/Dotenv/Dotenv.php index 41b83f57a6..025206326a 100644 --- a/src/Symfony/Component/Dotenv/Dotenv.php +++ b/src/Symfony/Component/Dotenv/Dotenv.php @@ -66,8 +66,8 @@ final class Dotenv */ 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 @@ final class Dotenv $_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 7caa75f066..4492c8e9e0 100644 --- a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php +++ b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php @@ -268,7 +268,7 @@ class DotenvTest extends TestCase 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');