Fix PDO instantiation - create PDO directly and register in container as instance

This commit is contained in:
Vladimir Mirivlad 2026-02-06 09:34:45 +00:00
parent d110c4ce26
commit 858f78b929
1 changed files with 26 additions and 28 deletions

View File

@ -9,37 +9,30 @@ use Slim\Middleware\ContentLengthMiddleware;
require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../vendor/autoload.php';
// 1. Загружаем переменные окружения через библиотеку Dotenv // Загружаем переменные окружения
// Добавляем отладку для проверки, читается ли .env файл
$envPath = __DIR__ . '/../.env'; $envPath = __DIR__ . '/../.env';
if (file_exists($envPath)) { if (file_exists($envPath)) {
// error_log("RSS Hub: .env file found at $envPath"); error_log("RSS Hub: .env file found at $envPath");
} else { } else {
// error_log("RSS Hub: .env file NOT FOUND at $envPath"); error_log("RSS Hub: .env file NOT FOUND at $envPath");
} }
try { try {
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load(); $dotenv->load();
// error_log("RSS Hub: .env file loaded successfully"); error_log("RSS Hub: .env file loaded successfully");
} catch (Exception $e) { } catch (Exception $e) {
// error_log("RSS Hub: Error loading .env file: " . $e->getMessage()); error_log("RSS Hub: Error loading .env file: " . $e->getMessage());
// Продолжаем выполнение, даже если .env не загрузился // Продолжаем выполнение, даже если .env не загрузился
} }
// 2. Настройка контейнера // Создаем PDO напрямую
$container = new DI\Container();
// 3. Настройка PDO
$container->set('db', function () {
// Пробуем получить переменные окружения
$host = $_ENV['DB_HOST'] ?? $_SERVER['DB_HOST'] ?? getenv('DB_HOST') ?? 'localhost'; $host = $_ENV['DB_HOST'] ?? $_SERVER['DB_HOST'] ?? getenv('DB_HOST') ?? 'localhost';
$dbname = $_ENV['DB_NAME'] ?? $_SERVER['DB_NAME'] ?? getenv('DB_NAME') ?? 'your_database_name'; $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'; $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'; $password = $_ENV['DB_PASS'] ?? $_SERVER['DB_PASS'] ?? getenv('DB_PASS') ?? 'your_secure_password';
// Логируем значения для отладки (временно, для проверки) error_log("RSS Hub DB config - Host: $host, DB: $dbname, User: $username");
// error_log("RSS Hub DB config - Host: $host, DB: $dbname, User: $username");
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4"; $dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";
@ -49,8 +42,13 @@ $container->set('db', function () {
PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_EMULATE_PREPARES => false,
]; ];
return new PDO($dsn, $username, $password, $options); $db = new PDO($dsn, $username, $password, $options);
});
// Настройка контейнера
$container = new DI\Container();
// Регистрируем PDO в контейнере как уже созданный объект
$container->set('db', $db);
// Установка контейнера для фабрики приложений // Установка контейнера для фабрики приложений
AppFactory::setContainer($container); AppFactory::setContainer($container);