start(); $csrf = new Csrf($session); // SQLite oder MySQL basierend auf DB_HOST Konfiguration und verfügbaren Treibern if (($config['db']['host'] ?? '') === 'sqlite') { $database = new DatabaseSqlite(['path' => $config['db']['name']]); } else { // Prüfe ob MySQL PDO Treiber verfügbar ist $availableDrivers = PDO::getAvailableDrivers(); if (in_array('mysql', $availableDrivers)) { try { $database = new Database($config['db']); // Teste die Verbindung $database->pdo(); } catch (\Throwable $e) { // Fallback zu SQLite wenn MySQL-Verbindung fehlschlägt error_log('MySQL connection failed, falling back to SQLite: ' . $e->getMessage()); $database = new DatabaseSqlite(['path' => $rootPath . '/storage/database.sqlite']); } } else { // Fallback zu SQLite wenn MySQL-Treiber nicht verfügbar error_log('MySQL PDO driver not available, using SQLite'); $database = new DatabaseSqlite(['path' => $rootPath . '/storage/database.sqlite']); } } $view = new View($rootPath, [ 'config' => $config, 'session' => $session, 'csrf' => $csrf, ]); return [ 'rootPath' => $rootPath, 'config' => $config, 'session' => $session, 'csrf' => $csrf, 'database' => $database, 'view' => $view, ];