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 '

DB 연결 테스트

'; try { $pdo = db_conn(); $ver = $pdo->query('SELECT VERSION()')->fetchColumn(); echo "

연결 성공 - MariaDB {$ver}

"; $tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN); echo '

테이블 (' . count($tables) . '개):

'; } catch (Exception $e) { echo "

실패: " . htmlspecialchars($e->getMessage()) . "

"; } }