$line) { $line = trim($line); if ($line === '' || $line[0] === '#') { continue; } if (!preg_match('/^([A-Z][A-Z0-9_]*)\s*=\s*(.*)$/', $line, $matches)) { throw new RuntimeException('Invalid environment entry on line ' . ($lineNumber + 1)); } $name = $matches[1]; $value = trim($matches[2]); if (strlen($value) >= 2) { $first = $value[0]; $last = substr($value, -1); if (($first === '"' && $last === '"') || ($first === "'" && $last === "'")) { $value = substr($value, 1, -1); } } // Explicit process environment values override the file. if (getenv($name) === false) { putenv($name . '=' . $value); $_ENV[$name] = $value; } } self::$loaded = true; } public static function required($name) { self::loadEnvironment(); $value = getenv($name); if ($value === false || $value === '') { throw new RuntimeException('Required server setting is missing: ' . $name); } return $value; } public static function integer($name, $default) { self::loadEnvironment(); $value = getenv($name); if ($value === false || $value === '') { return (int) $default; } $parsed = filter_var($value, FILTER_VALIDATE_INT); if ($parsed === false) { throw new RuntimeException('Server setting must be an integer: ' . $name); } return $parsed; } }