Fix fatal error when db.php doesn't exist yet on a fresh deployment
config.php and SetupController beide luden db.php bisher ungeprueft per require, was auf einem frischen Server (vor der Ersteinrichtung) zu einem fatalen Fehler gefuehrt haette, noch bevor /setup ueberhaupt erreichbar ist. Faellt jetzt auf eine leere Config zurueck. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
fe6b463135
commit
a3854fe5b8
2 changed files with 14 additions and 2 deletions
|
|
@ -3,7 +3,11 @@
|
|||
return [
|
||||
// Ausgelagert, damit das Admin-Panel (Einstellungen -> Datenbank) diese Datei
|
||||
// gezielt neu schreiben kann, ohne den Rest dieser Konfiguration anzufassen.
|
||||
'db' => require __DIR__ . '/db.php',
|
||||
// Existiert db.php noch nicht (frischer Server vor der Ersteinrichtung), wird
|
||||
// hier bewusst NICHT fatal abgebrochen, damit /setup überhaupt erreichbar ist.
|
||||
'db' => is_file(__DIR__ . '/db.php')
|
||||
? require __DIR__ . '/db.php'
|
||||
: ['host' => '', 'name' => '', 'user' => '', 'pass' => '', 'charset' => 'utf8mb4'],
|
||||
// Einmalpasswort für den Ersteinrichtungs-Assistenten unter /setup (siehe setup.php.example).
|
||||
// Liegt in einer eigenen, nicht versionierten Datei, genau wie db.php.
|
||||
'setup_password' => is_file(__DIR__ . '/setup.php') ? require __DIR__ . '/setup.php' : null,
|
||||
|
|
|
|||
|
|
@ -20,9 +20,17 @@ class SetupController
|
|||
return ($pw !== null && $pw !== '') ? $pw : null;
|
||||
}
|
||||
|
||||
private static function currentDbConfig(): array
|
||||
{
|
||||
$path = __DIR__ . '/../../config/db.php';
|
||||
return is_file($path)
|
||||
? require $path
|
||||
: ['host' => '', 'name' => '', 'user' => '', 'pass' => '', 'charset' => 'utf8mb4'];
|
||||
}
|
||||
|
||||
private static function tryConnect(?array $overrideConfig = null): ?PDO
|
||||
{
|
||||
$db = $overrideConfig ?? require __DIR__ . '/../../config/db.php';
|
||||
$db = $overrideConfig ?? self::currentDbConfig();
|
||||
try {
|
||||
$dsn = "mysql:host={$db['host']};dbname={$db['name']};charset=" . ($db['charset'] ?? 'utf8mb4');
|
||||
return new PDO($dsn, $db['user'], $db['pass'], [
|
||||
|
|
|
|||
Loading…
Reference in a new issue