Files
Webgis-Poverty/api/config/database.php
T
Abimanyu Ridho c86b2890f1 update config
2026-06-11 14:15:44 +07:00

71 lines
2.3 KiB
PHP

<?php
// api/config/database.php
mysqli_report(MYSQLI_REPORT_OFF);
if (!function_exists('loadDatabaseConfig')) {
function loadDatabaseConfig(): array {
// Load .env if exists
$envFile = dirname(__DIR__, 2) . '/.env';
if (file_exists($envFile)) {
$lines = file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) continue;
list($name, $value) = explode('=', $line, 2);
$name = trim($name);
$value = trim($value);
if (!array_key_exists($name, $_SERVER) && !array_key_exists($name, $_ENV)) {
putenv(sprintf('%s=%s', $name, $value));
$_ENV[$name] = $value;
$_SERVER[$name] = $value;
}
}
}
$config = [
'host' => getenv('DB_HOST') ?: '127.0.0.1',
'user' => getenv('DB_USER') ?: 'root',
'pass' => getenv('DB_PASS') ?: '',
'name' => getenv('DB_NAME') ?: 'webgis_poverty',
'port' => (int)(getenv('DB_PORT') ?: 3306),
'charset' => getenv('DB_CHARSET') ?: 'utf8mb4',
];
$localConfigFile = __DIR__ . '/database.local.php';
if (is_file($localConfigFile)) {
$localConfig = require $localConfigFile;
if (is_array($localConfig)) {
$config = array_merge($config, array_intersect_key($localConfig, $config));
}
}
return $config;
}
}
$dbConfig = loadDatabaseConfig();
define('DB_HOST', $dbConfig['host']);
define('DB_USER', $dbConfig['user']);
define('DB_PASS', $dbConfig['pass']);
define('DB_NAME', $dbConfig['name']);
define('DB_PORT', (int)$dbConfig['port']);
define('DB_CHARSET', $dbConfig['charset']);
function getDB(): mysqli {
static $conn = null;
if ($conn === null) {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
if ($conn->connect_error) {
error_log('DB connection failed: ' . $conn->connect_error);
http_response_code(500);
echo json_encode([
'status' => 'error',
'message' => 'Koneksi database gagal'
]);
exit;
}
$conn->set_charset(DB_CHARSET);
}
return $conn;
}