diff --git a/src/App/ConfigLoader.php b/src/App/ConfigLoader.php index 77bb992b..cb117a3a 100644 --- a/src/App/ConfigLoader.php +++ b/src/App/ConfigLoader.php @@ -14,7 +14,7 @@ final class ConfigLoader $basePath = $projectRoot . '/config/' . $name . '.php'; $config = is_file($basePath) ? require $basePath : []; - $appEnv = getenv('APP_ENV') ?: 'local'; + $appEnv = self::detectEnvironment(); $envPath = $projectRoot . '/config/' . $appEnv . '/' . $name . '.php'; if (!is_file($envPath)) { @@ -45,4 +45,27 @@ final class ConfigLoader return $base; } + + private static function detectEnvironment(): string + { + $appEnv = trim((string) getenv('APP_ENV')); + if ($appEnv !== '') { + return $appEnv; + } + + $host = strtolower(trim((string) ($_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'] ?? ''))); + if ($host === '') { + return 'local'; + } + + if (str_contains($host, 'staging.')) { + return 'staging'; + } + + if (str_contains($host, 'desktop.kusche.berlin')) { + return 'prod'; + } + + return 'local'; + } }