63 lines
1.7 KiB
PHP
63 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* db_conn.php - MariaDB PDO
|
|
*/
|
|
|
|
// 세션 쿠키 도메인을 서브도메인 공유가 가능하도록 설정
|
|
session_set_cookie_params(0, '/', '.baroncs.co.kr');
|
|
|
|
// 세션이 시작되지 않았다면 시작
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
|
|
function db_conn(): PDO
|
|
{
|
|
static $pdo = null;
|
|
if ($pdo !== null) { return $pdo; }
|
|
|
|
$host = 'localhost';
|
|
$port = 3306;
|
|
$dbname = 'baronhomep';
|
|
$user = 'baronhomep';
|
|
$pass = 'baron3840!!';
|
|
$charset = 'utf8mb4';
|
|
|
|
$dsn = "mysql:host={$host};dbname={$dbname};charset={$charset}";
|
|
|
|
$options = [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
PDO::ATTR_EMULATE_PREPARES => false,
|
|
PDO::ATTR_TIMEOUT => 5,
|
|
];
|
|
|
|
try {
|
|
$pdo = new PDO($dsn, $user, $pass, $options);
|
|
$pdo->exec("SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci");
|
|
} catch (PDOException $e) {
|
|
error_log('[DB_CONN ERROR] ' . $e->getMessage());
|
|
throw new RuntimeException('DB error: ' . $e->getMessage());
|
|
}
|
|
return $pdo;
|
|
}
|
|
|
|
// 직접 실행 시 연결 테스트
|
|
if (basename(__FILE__) === basename($_SERVER['SCRIPT_FILENAME'] ?? '')) {
|
|
header('Content-Type: text/html; charset=utf-8');
|
|
echo '<h2>DB 연결 테스트</h2>';
|
|
try {
|
|
$pdo = db_conn();
|
|
$ver = $pdo->query('SELECT VERSION()')->fetchColumn();
|
|
echo "<p style='color:green'>연결 성공 - MariaDB {$ver}</p>";
|
|
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
|
|
echo '<p>테이블 (' . count($tables) . '개):</p><ul>';
|
|
foreach ($tables as $t) {
|
|
echo '<li>' . htmlspecialchars($t) . '</li>';
|
|
}
|
|
echo '</ul>';
|
|
} catch (Exception $e) {
|
|
echo "<p style='color:red'>실패: " . htmlspecialchars($e->getMessage()) . "</p>";
|
|
}
|
|
}
|