diff --git a/src/Symfony/Component/Dotenv/Dotenv.php b/src/Symfony/Component/Dotenv/Dotenv.php index 49cdf78d682c..a7435f2ef926 100644 --- a/src/Symfony/Component/Dotenv/Dotenv.php +++ b/src/Symfony/Component/Dotenv/Dotenv.php @@ -67,7 +67,7 @@ public function load($path/*, ...$paths*/) public function populate($values) { foreach ($values as $name => $value) { - if (isset($_ENV[$name]) || false !== getenv($name)) { + if (isset($_ENV[$name]) || isset($_SERVER[$name]) || false !== getenv($name)) { continue; } diff --git a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php index 525848b42ea8..85204e5c476a 100644 --- a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php +++ b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php @@ -154,4 +154,24 @@ public function testLoadDirectory() $dotenv = new Dotenv(); $dotenv->load(__DIR__); } + + public function testServerSuperglobalIsNotOverriden() + { + $originalValue = $_SERVER['argc']; + + $dotenv = new DotEnv(); + $dotenv->populate(array('argc' => 'new_value')); + + $this->assertSame($originalValue, $_SERVER['argc']); + } + + public function testEnvVarIsNotOverriden() + { + putenv('TEST_ENV_VAR=original_value'); + + $dotenv = new DotEnv(); + $dotenv->populate(array('TEST_ENV_VAR' => 'new_value')); + + $this->assertSame('original_value', getenv('TEST_ENV_VAR')); + } }