Files

84 lines
3.2 KiB
PHP

<?php
// Cek apakah web sedang berjalan di dalam container Docker
$is_docker = file_exists('/.dockerenv');
// Membaca kredensial dari environment variables (sangat direkomendasikan untuk Coolify)
$host = getenv('DB_HOST') ?: (getenv('SERVICE_MYSQL_HOST') ?: null);
$user = getenv('DB_USER') ?: (getenv('SERVICE_MYSQL_USER') ?: null);
$pass = getenv('DB_PASSWORD') ?: (getenv('SERVICE_MYSQL_PASSWORD') ?: null);
$db = getenv('DB_DATABASE') ?: (getenv('SERVICE_MYSQL_DB') ?: null);
// Jika ada URL koneksi tunggal (misal DATABASE_URL / SERVICE_DATABASE_URL)
$db_url = getenv('DATABASE_URL') ?: (getenv('SERVICE_DATABASE_URL') ?: null);
if ($db_url) {
$host = $db_url;
}
// Helper untuk parsing connection string (mysql://user:pass@host:port/db)
function parse_db_uri($uri, &$host, &$user, &$pass, &$db) {
if ($uri && strpos($uri, '://') !== false) {
$parsed = parse_url($uri);
$host = $parsed['host'] ?? $host;
$port = $parsed['port'] ?? null;
if ($port) {
$host = $host . ":" . $port;
}
if (isset($parsed['user'])) {
$user = $parsed['user'];
}
if (isset($parsed['pass'])) {
$pass = $parsed['pass'];
}
if (isset($parsed['path'])) {
$db = ltrim($parsed['path'], '/');
}
}
}
// Lakukan parsing jika $host berupa URI
parse_db_uri($host, $host, $user, $pass, $db);
// Jika environment variables tidak terdefinisi (seperti di lokal/development), gunakan auto-detection fallback
if (!$host) {
if ($_SERVER['HTTP_HOST'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1') {
// KONEKSI UNTUK LOKAL (Laragon / Docker Lokal)
// Jika di dalam Docker, gunakan host.docker.internal untuk mengakses MySQL di host Windows
$host = $is_docker ? "host.docker.internal" : "localhost";
$user = "root";
// Coba koneksi ke server dengan password "root" (bawaan MySQL Server Anda)
// Jika gagal, gunakan password kosong "" (bawaan Laragon/XAMPP)
$pass = "root";
$test_conn = @mysqli_connect($host, $user, $pass);
if (!$test_conn) {
$pass = "";
} else {
mysqli_close($test_conn);
}
$db = "db_gis_spbu"; // Silakan sesuaikan jika nama database lokal Anda berbeda
} else {
// FALLBACK KREDENSIAL SERVER ONLINE COOLIFY jika env vars tidak diatur
// Menggunakan kredensial database online yang Anda deploy
$host = "fwk0cgc840wg0gc8g04gs0gs:3306";
$user = "mysql";
$db = "default";
// Coba hubungkan dengan db_pass (V7aRN...) terlebih dahulu
$pass = "V7aRN0kJdnaT0kWlYiHWMF4hYWDfXUFFyztql7IeoW7FrKm0hcWFRKOim5kDU4Hi";
$test_conn = @mysqli_connect($host, $user, $pass, $db);
if (!$test_conn) {
// Jika gagal, gunakan password dari connection string (KvEkb...)
$pass = "KvEkbHqNswbc2zSA4HiqvtzxQwfegOiUUkiZBg6pCRz5JBhEpSbNyHRytgtXwXMn";
} else {
mysqli_close($test_conn);
}
}
}
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
die("Koneksi ke database gagal: " . mysqli_connect_error());
}
?>