Files
D1041231009-WebGIS-SPBU/_legacy_original/api/env.php
T
2026-06-11 14:53:35 +07:00

57 lines
1.9 KiB
PHP

<?php
// ── RESOLUSI ENVIRONMENT VARIABLE ────────────────────────────────────────────
// Dipakai oleh api/config.php dan docker/init-db.php. Prioritas nilai mengikuti
// perilaku Coolify (lihat coolify-deployment.md Aturan #1):
// env var asli (Coolify/Docker) > file .env di root project > default.
// File .env opsional — di dalam container memang tidak ada.
function loadEnvFile(string $path): array
{
if (!is_file($path)) {
return [];
}
$vars = [];
foreach (file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
if (str_starts_with(trim($line), '#') || !str_contains($line, '=')) continue;
[$key, $value] = explode('=', $line, 2);
$vars[trim($key)] = trim($value);
}
return $vars;
}
function env(string $key): ?string
{
static $fileVars = null;
if ($fileVars === null) {
$fileVars = loadEnvFile(__DIR__ . '/../.env');
}
$real = getenv($key);
if ($real !== false && $real !== '') {
return $real;
}
return ($fileVars[$key] ?? '') !== '' ? $fileVars[$key] : null;
}
// Nama variabel project ini (DB_NAME/DB_USER/DB_PASS) maupun alias gaya Laravel
// (DB_DATABASE/DB_USERNAME/DB_PASSWORD) sama-sama diterima — lihat Aturan #2.
function dbConfig(): array
{
$envAny = function (array $keys, string $default): string {
foreach ($keys as $key) {
$value = env($key);
if ($value !== null) return $value;
}
return $default;
};
return [
'host' => $envAny(['DB_HOST'], 'localhost'),
'port' => $envAny(['DB_PORT'], '3306'),
'dbname' => $envAny(['DB_NAME', 'DB_DATABASE'], ''),
'username' => $envAny(['DB_USER', 'DB_USERNAME'], 'root'),
'password' => $envAny(['DB_PASS', 'DB_PASSWORD'], ''),
];
}