From 23a8dbcaf6f8493a88c2fbbc2a2ec6eb91cbf551 Mon Sep 17 00:00:00 2001 From: Vladimir Mirivlad Date: Fri, 6 Feb 2026 15:11:27 +0000 Subject: [PATCH] Fix DB connection in app.php - use same approach as public/index.php with Dotenv --- app.php | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/app.php b/app.php index 27794a6..1d0463e 100755 --- a/app.php +++ b/app.php @@ -25,27 +25,35 @@ if (file_exists(__DIR__ . '/vendor/autoload.php')) { use App\MigrationRunner; -// Загрузка переменных окружения -if (file_exists(__DIR__ . '/.env')) { - $lines = file(__DIR__ . '/.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - foreach ($lines as $line) { - if (strpos($line, '=') !== false && strpos($line, '#') !== 0) { - list($key, $value) = explode('=', $line, 2); - $key = trim($key); - $value = trim($value); - if (!isset($_ENV[$key])) { - $_ENV[$key] = $value; - } - } - } +// Загрузка переменных окружения через Dotenv +$envPath = __DIR__ . '/.env'; +if (file_exists($envPath)) { + echo "Файл .env найден\n"; +} else { + echo "Файл .env НЕ найден по пути: $envPath\n"; + exit(1); } -// Загрузка конфигурации БД -$config = require_once __DIR__ . '/config/database.php'; +try { + $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); + $dotenv->load(); + echo ".env файл успешно загружен\n"; +} catch (Exception $e) { + echo "Ошибка при загрузке .env файла: " . $e->getMessage() . "\n"; + exit(1); +} + +// Получение параметров подключения из переменных окружения +$host = $_ENV['DB_HOST'] ?? $_SERVER['DB_HOST'] ?? getenv('DB_HOST') ?? 'localhost'; +$dbname = $_ENV['DB_NAME'] ?? $_SERVER['DB_NAME'] ?? getenv('DB_NAME') ?? 'your_database_name'; +$username = $_ENV['DB_USER'] ?? $_SERVER['DB_USER'] ?? getenv('DB_USER') ?? 'your_database_user'; +$password = $_ENV['DB_PASS'] ?? $_SERVER['DB_PASS'] ?? getenv('DB_PASS') ?? 'your_secure_password'; + +echo "Подключение к БД: host=$host, dbname=$dbname, user=$username\n"; try { - $dsn = "mysql:host={$config['host']};dbname={$config['database']};charset=utf8mb4"; - $pdo = new PDO($dsn, $config['username'], $config['password'], [ + $dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4"; + $pdo = new PDO($dsn, $username, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false,