8000 [Dotenv] Get env using $_SERVER to work with fastcgi_param and workar… · symfony/symfony@e72e75c · GitHub
[go: up one dir, main page]

Skip to content

Commit e72e75c

Browse files
[Dotenv] Get env using $_SERVER to work with fastcgi_param and workaround thread safety issues
1 parent 2204f91 commit e72e75c

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/Symfony/Component/DependencyInjection/Container.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,13 +438,13 @@ protected function getEnv($name)
438438
if (isset($this->envCache[$name]) || array_key_exists($name, $this->envCache)) {
439439
return $this->envCache[$name];
440440
}
441-
if (0 !== strpos($name, 'HTTP_') && isset($_SERVER[$name])) {
441+
if (isset($_SERVER[$name]) && 0 !== strpos($name, 'HTTP_')) {
442442
return $this->envCache[$name] = $_SERVER[$name];
443443
}
444444
if (isset($_ENV[$name])) {
445445
return $this->envCache[$name] = $_ENV[$name];
446446
}
447-
if (false !== $env = getenv($name)) {
447+
if (false !== ($env = getenv($name)) && null !== $env) { // null is a possible value because of thread safety issues
448448
return $this->envCache[$name] = $env;
449449
}
450450
if (!$this->hasParameter("env($name)")) {

src/Symfony/Component/Dotenv/Dotenv.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public function populate($values)
7070
unset($loadedVars['']);
7171

7272
foreach ($values as $name => $value) {
73-
if (!isset($loadedVars[$name]) && (isset($_ENV[$name]) || isset($_SERVER[$name]) || false !== getenv($name))) {
73+
// don't check existence with getenv() because of thread safety issues
74+
if (!isset($loadedVars[$name]) && (isset($_ENV[$name]) || isset($_SERVER[$name]))) {
7475
continue;
7576
}
7677

@@ -363,7 +364,15 @@ private function resolveVariables($value)
363364
}
364365

365366
$name = $matches[3];
366-
$value = isset($this->values[$name]) ? $this->values[$name] : (isset($_ENV[$name]) ? $_ENV[$name] : (string) getenv($name));
367+
if (isset($this->values[$name])) {
368+
$value = $this->values[$name];
369+
} elseif (isset($_SERVER[$name]) && 0 !== strpos($name, 'HTTP_')) {
370+
$value = $_SERVER[$name];
371+
} elseif (isset($_ENV[$name])) {
372+
$value = $_ENV[$name];
373+
} else {
374+
$value = (string) getenv($name);
375+
}
367376

368377
if (!$matches[2] && isset($matches[4])) {
369378
$value .= '}';

0 commit comments

Comments
 (0)
0