57 lines
1.9 KiB
PHP
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'], ''),
|
|
];
|
|
}
|