load($mergedEnv); $container->add('router', $router); $container->add('config', $config); return $container; function load_env(): void { // Load .env file if there is one $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..'); $dotenv->safeLoad(); // Load Infisical vars if set $url = $_ENV['INFISICAL_URL'] ?? null; $machine_id = $_ENV['INFISICAL_MACHINE_ID'] ?? null; $secret_id = $_ENV['INFISICAL_SECRET_ID'] ?? null; $project_id = $_ENV['INFISICAL_PROJECT_ID'] ?? null; $env = $_ENV['INFISICAL_ENV'] ?? null; if (!empty($url)) { $sdk = new InfisicalSDK($url); $response = $sdk->auth()->universalAuth()->login($machine_id, $secret_id); $params = new ListSecretsParameters( environment: $env, secretPath: "/", projectId: $project_id ); $secrets = $sdk->secrets()->list($params); foreach ($secrets as $secret) { putenv("{$secret->secretKey}={$secret->secretValue}"); $_ENV[$secret->secretKey] = $secret->secretValue; } } }