fix: inline getDatabasePath into Database.php, delete config/config.php

- Remove require_once for config/config.php (file was never deployed — outside app/)
- Inline DB path resolution directly in Database::determineDatabasePath()
- Uses APP_ROOT when defined (bootstrap already loaded), falls back to __DIR__/../
- DB_ENV=test|prod env-var override preserved for tests
- php -S cli-server -> test.db, nginx/fpm -> posterg.db
This commit is contained in:
Pontoporeia
2026-04-20 14:23:30 +02:00
parent 468278349a
commit fa75ca4a65
4 changed files with 16 additions and 58 deletions

View File

@@ -57,6 +57,8 @@
- [x] Update Dispatcher to render full pages (head + header + view + footer) instead of requiring bootstrap - [x] Update Dispatcher to render full pages (head + header + view + footer) instead of requiring bootstrap
- [x] Ensure admin/index.php bootstraps its own path (not affected by front controller) - [x] Ensure admin/index.php bootstraps its own path (not affected by front controller)
- [x] Fix config/config.php path mess — inline getDatabasePath() into Database.php, delete config/config.php
### Phase 3: Server config ### Phase 3: Server config
- [ ] Update router.php — route all PHP requests to Dispatcher - [ ] Update router.php — route all PHP requests to Dispatcher
- [ ] Update nginx config — point all public routes to index.php via try_files - [ ] Update nginx config — point all public routes to index.php via try_files

View File

@@ -1,7 +1,5 @@
<?php <?php
require_once __DIR__ . '/../../config/config.php';
/** /**
* Unified Database connection class for Post-ERG thesis database * Unified Database connection class for Post-ERG thesis database
* Combines functionality from both front-backend and formulaire * Combines functionality from both front-backend and formulaire
@@ -36,18 +34,25 @@ class Database {
} }
/** /**
* Determine database path * Determine database path.
* Uses centralized config from config.php * Priority: explicit override → DB_ENV env-var → sapi auto-detect.
* Priority: custom path > config.php settings * APP_ROOT is defined by bootstrap.php before any controller loads Database.
*/ */
private function determineDatabasePath($customPath = null) { private function determineDatabasePath($customPath = null): string {
// Allow explicit override
if ($customPath !== null && file_exists($customPath)) { if ($customPath !== null && file_exists($customPath)) {
return $customPath; return $customPath;
} }
// Use centralized configuration $root = defined('APP_ROOT') ? APP_ROOT : __DIR__ . '/..';
return getDatabasePath(); $testDb = $root . '/storage/test.db';
$prodDb = $root . '/storage/posterg.db';
$env = getenv('DB_ENV');
if ($env === 'test') return $testDb;
if ($env === 'prod') return $prodDb;
// php -S (dev server) → test DB; everything else (nginx/fpm) → prod DB
return php_sapi_name() === 'cli-server' ? $testDb : $prodDb;
} }
/** /**

Binary file not shown.

View File

@@ -1,49 +0,0 @@
<?php
/**
* Configuration for Post-ERG thesis database
* Central location for database paths and environment settings
*/
// Database paths relative to repository root
define('DB_ROOT', __DIR__ . '/..');
// Local dev database (php -S, never committed)
define('DB_TEST_PATH', DB_ROOT . '/app/storage/test.db');
// Production database (nginx/php-fpm on server)
define('DB_PROD_PATH', DB_ROOT . '/app/storage/posterg.db');
/**
* Determine which database to use.
*
* - php built-in server (php -S …) → storage/test.db (local dev)
* - everything else (nginx/fpm) → storage/posterg.db (production)
*
* The DB_ENV env-var can still override either way:
* DB_ENV=test → force test.db
* DB_ENV=prod → force posterg.db
*/
function getDatabasePath(): string {
$env = getenv('DB_ENV');
if ($env === 'test') {
return DB_TEST_PATH;
}
if ($env === 'prod') {
return DB_PROD_PATH;
}
// Auto-detect: php built-in CLI server == local development
if (php_sapi_name() === 'cli-server') {
return DB_TEST_PATH;
}
return DB_PROD_PATH;
}
/**
* Check if running in local dev mode
*/
function isTestMode(): bool {
return getDatabasePath() === DB_TEST_PATH;
}