diff --git a/01/koneksi.php b/01/koneksi.php index 35eeb05..e5998fe 100644 --- a/01/koneksi.php +++ b/01/koneksi.php @@ -1,15 +1,46 @@ connect_error) { - die("Koneksi database gagal: " . $conn->connect_error); +$explicitHost = env_value(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST', 'DATABASE_HOST']); +$user = env_value(['DB_USER', 'MYSQL_USER', 'MARIADB_USER', 'DATABASE_USER'], 'root'); +$pass = env_value(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD', 'DATABASE_PASSWORD'], ''); +$db = env_value(['DB_NAME_01', 'DB_NAME_SPBU', 'DB_NAME', 'MYSQL_DATABASE', 'MARIADB_DATABASE', 'DATABASE_NAME'], 'spbu_db'); +$port = (int) env_value(['DB_PORT', 'MYSQL_PORT', 'MARIADB_PORT', 'DATABASE_PORT'], 3306); + +$hosts = $explicitHost ? [$explicitHost] : []; +if (file_exists('/.dockerenv')) { + $hosts = array_merge($hosts, ['mysql', 'mariadb', 'database', 'db']); +} +$hosts[] = 'localhost'; +$hosts[] = '127.0.0.1'; +$hosts = array_values(array_unique($hosts)); + +$conn = null; +$lastError = ''; + +foreach ($hosts as $host) { + $candidate = mysqli_init(); + $candidate->options(MYSQLI_OPT_CONNECT_TIMEOUT, 3); + if (@$candidate->real_connect($host, $user, $pass, $db, $port)) { + $conn = $candidate; + break; + } + $lastError = $candidate->connect_error ?: mysqli_connect_error(); +} + +if (!$conn) { + http_response_code(500); + die("Koneksi database gagal. Host dicoba: " . implode(', ', $hosts) . ". Error: " . $lastError); } $conn->set_charset("utf8mb4"); diff --git a/02/koneksi.php b/02/koneksi.php index a1441b8..a4f60f1 100644 --- a/02/koneksi.php +++ b/02/koneksi.php @@ -1,15 +1,46 @@ connect_error) { - die("Koneksi database gagal: " . $conn->connect_error); +$explicitHost = env_value(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST', 'DATABASE_HOST']); +$user = env_value(['DB_USER', 'MYSQL_USER', 'MARIADB_USER', 'DATABASE_USER'], 'root'); +$pass = env_value(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD', 'DATABASE_PASSWORD'], ''); +$db = env_value(['DB_NAME_02', 'DB_NAME_WEBGIS2', 'DB_NAME', 'MYSQL_DATABASE', 'MARIADB_DATABASE', 'DATABASE_NAME'], 'webgis2'); +$port = (int) env_value(['DB_PORT', 'MYSQL_PORT', 'MARIADB_PORT', 'DATABASE_PORT'], 3306); + +$hosts = $explicitHost ? [$explicitHost] : []; +if (file_exists('/.dockerenv')) { + $hosts = array_merge($hosts, ['mysql', 'mariadb', 'database', 'db']); +} +$hosts[] = 'localhost'; +$hosts[] = '127.0.0.1'; +$hosts = array_values(array_unique($hosts)); + +$conn = null; +$lastError = ''; + +foreach ($hosts as $host) { + $candidate = mysqli_init(); + $candidate->options(MYSQLI_OPT_CONNECT_TIMEOUT, 3); + if (@$candidate->real_connect($host, $user, $pass, $db, $port)) { + $conn = $candidate; + break; + } + $lastError = $candidate->connect_error ?: mysqli_connect_error(); +} + +if (!$conn) { + http_response_code(500); + die("Koneksi database gagal. Host dicoba: " . implode(', ', $hosts) . ". Error: " . $lastError); } $conn->set_charset("utf8mb4"); diff --git a/04/koneksi.php b/04/koneksi.php index 2bf9b3d..e6f778b 100644 --- a/04/koneksi.php +++ b/04/koneksi.php @@ -1,15 +1,46 @@ connect_error) { - die("Koneksi database gagal: " . $conn->connect_error); +$explicitHost = env_value(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST', 'DATABASE_HOST']); +$user = env_value(['DB_USER', 'MYSQL_USER', 'MARIADB_USER', 'DATABASE_USER'], 'root'); +$pass = env_value(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD', 'DATABASE_PASSWORD'], ''); +$db = env_value(['DB_NAME_04', 'DB_NAME_SPBU', 'DB_NAME', 'MYSQL_DATABASE', 'MARIADB_DATABASE', 'DATABASE_NAME'], 'spbu_db'); +$port = (int) env_value(['DB_PORT', 'MYSQL_PORT', 'MARIADB_PORT', 'DATABASE_PORT'], 3306); + +$hosts = $explicitHost ? [$explicitHost] : []; +if (file_exists('/.dockerenv')) { + $hosts = array_merge($hosts, ['mysql', 'mariadb', 'database', 'db']); +} +$hosts[] = 'localhost'; +$hosts[] = '127.0.0.1'; +$hosts = array_values(array_unique($hosts)); + +$conn = null; +$lastError = ''; + +foreach ($hosts as $host) { + $candidate = mysqli_init(); + $candidate->options(MYSQLI_OPT_CONNECT_TIMEOUT, 3); + if (@$candidate->real_connect($host, $user, $pass, $db, $port)) { + $conn = $candidate; + break; + } + $lastError = $candidate->connect_error ?: mysqli_connect_error(); +} + +if (!$conn) { + http_response_code(500); + die("Koneksi database gagal. Host dicoba: " . implode(', ', $hosts) . ". Error: " . $lastError); } $conn->set_charset("utf8mb4"); diff --git a/05/koneksi.php b/05/koneksi.php index 244c1bf..657db67 100644 --- a/05/koneksi.php +++ b/05/koneksi.php @@ -1,16 +1,49 @@ connect_error) { +$explicitHost = env_value(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST', 'DATABASE_HOST']); +$user = env_value(['DB_USER', 'MYSQL_USER', 'MARIADB_USER', 'DATABASE_USER'], 'root'); +$pass = env_value(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD', 'DATABASE_PASSWORD'], ''); +$db = env_value(['DB_NAME_05', 'DB_NAME_UAS', 'DB_NAME', 'MYSQL_DATABASE', 'MARIADB_DATABASE', 'DATABASE_NAME'], 'webgis_uas'); +$port = (int) env_value(['DB_PORT', 'MYSQL_PORT', 'MARIADB_PORT', 'DATABASE_PORT'], 3306); + +$hosts = $explicitHost ? [$explicitHost] : []; +if (file_exists('/.dockerenv')) { + $hosts = array_merge($hosts, ['mysql', 'mariadb', 'database', 'db']); +} +$hosts[] = 'localhost'; +$hosts[] = '127.0.0.1'; +$hosts = array_values(array_unique($hosts)); + +$conn = null; +$lastError = ''; + +foreach ($hosts as $host) { + $candidate = mysqli_init(); + $candidate->options(MYSQLI_OPT_CONNECT_TIMEOUT, 3); + if (@$candidate->real_connect($host, $user, $pass, $db, $port)) { + $conn = $candidate; + break; + } + $lastError = $candidate->connect_error ?: mysqli_connect_error(); +} + +if (!$conn) { http_response_code(500); - die(json_encode(["error" => "Koneksi database gagal: " . $conn->connect_error])); + die(json_encode([ + "status" => "error", + "msg" => "Koneksi database gagal. Host dicoba: " . implode(', ', $hosts) . ". Error: " . $lastError + ])); } $conn->set_charset("utf8mb4");