From e23a0546acf15e8b40a295931c2d7731375d22c9 Mon Sep 17 00:00:00 2001 From: Vladimir Mirivlad Date: Fri, 6 Feb 2026 08:21:41 +0000 Subject: [PATCH] Fix DI container configuration and improve .env loading mechanism --- public/index.php | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/public/index.php b/public/index.php index 4e93bc3..705adc2 100644 --- a/public/index.php +++ b/public/index.php @@ -11,17 +11,35 @@ require __DIR__ . '/../vendor/autoload.php'; // Загрузка переменных окружения $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); -$dotenv->load(); +$dotenv->safeLoad(); // Используем safeLoad вместо load для избежания ошибок // Настройка контейнера $container = new DI\Container(); // Настройка PDO $container->set('db', function () { - $host = $_ENV['DB_HOST'] ?? 'localhost'; - $dbname = $_ENV['DB_NAME'] ?? 'rss_hub'; - $username = $_ENV['DB_USER'] ?? 'rss_hub_user'; - $password = $_ENV['DB_PASS'] ?? 'secure_password'; + // Загружаем переменные окружения внутри функции для уверенности + $envPath = __DIR__ . '/../.env'; + if (file_exists($envPath)) { + $lines = file($envPath, 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]) && !isset($_SERVER[$key])) { + putenv("$key=$value"); + $_ENV[$key] = $value; + $_SERVER[$key] = $value; + } + } + } + } + + $host = $_ENV['DB_HOST'] ?? $_SERVER['DB_HOST'] ?? getenv('DB_HOST') ?? 'localhost'; + $dbname = $_ENV['DB_NAME'] ?? $_SERVER['DB_NAME'] ?? getenv('DB_NAME') ?? 'rsshub'; + $username = $_ENV['DB_USER'] ?? $_SERVER['DB_USER'] ?? getenv('DB_USER') ?? 'rsshub'; + $password = $_ENV['DB_PASS'] ?? $_SERVER['DB_PASS'] ?? getenv('DB_PASS') ?? 'rsshub_moloko22'; $dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";