42 lines
1.3 KiB
PHP
42 lines
1.3 KiB
PHP
<?php
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
if (file_exists(__DIR__ . '/vendor/autoload.php')) {
|
|
require_once __DIR__ . '/vendor/autoload.php';
|
|
}
|
|
|
|
function get_db_config() {
|
|
$config = [
|
|
'host' => getenv('DB_HOST') ?: '127.0.0.1',
|
|
'port' => getenv('DB_PORT') ?: '3306',
|
|
'name' => getenv('DB_NAME') ?: 'default_db',
|
|
'user' => getenv('DB_USER') ?: 'default_user',
|
|
'pass' => getenv('DB_PASS') ?: 'default_pass',
|
|
];
|
|
if (empty($config['name'])) die('DB_NAME is not set');
|
|
if (empty($config['user'])) die('DB_USER is not set');
|
|
return $config;
|
|
}
|
|
|
|
function db() {
|
|
static $pdo;
|
|
if ($pdo) {
|
|
return $pdo;
|
|
}
|
|
try {
|
|
$c = get_db_config();
|
|
$dsn = sprintf('mysql:host=%s;port=%d;dbname=%s;charset=utf8mb4', $c['host'], $c['port'], $c['name']);
|
|
$pdo = new PDO($dsn, $c['user'], $c['pass'], [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
PDO::ATTR_EMULATE_PREPARES => false,
|
|
]);
|
|
return $pdo;
|
|
} catch (PDOException $e) {
|
|
error_log($e->getMessage());
|
|
http_response_code(500);
|
|
die('Database connection failed. Check server logs.');
|
|
}
|
|
} |