Fix PDO instantiation - create PDO directly and register in container as instance
This commit is contained in:
parent
d110c4ce26
commit
858f78b929
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue