Fix DI container configuration and improve .env loading mechanism
This commit is contained in:
parent
ccecd2b5bb
commit
e23a0546ac
|
|
@ -11,17 +11,35 @@ require __DIR__ . '/../vendor/autoload.php';
|
||||||
|
|
||||||
// Загрузка переменных окружения
|
// Загрузка переменных окружения
|
||||||
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
|
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
|
||||||
$dotenv->load();
|
$dotenv->safeLoad(); // Используем safeLoad вместо load для избежания ошибок
|
||||||
|
|
||||||
// Настройка контейнера
|
// Настройка контейнера
|
||||||
$container = new DI\Container();
|
$container = new DI\Container();
|
||||||
|
|
||||||
// Настройка PDO
|
// Настройка PDO
|
||||||
$container->set('db', function () {
|
$container->set('db', function () {
|
||||||
$host = $_ENV['DB_HOST'] ?? 'localhost';
|
// Загружаем переменные окружения внутри функции для уверенности
|
||||||
$dbname = $_ENV['DB_NAME'] ?? 'rss_hub';
|
$envPath = __DIR__ . '/../.env';
|
||||||
$username = $_ENV['DB_USER'] ?? 'rss_hub_user';
|
if (file_exists($envPath)) {
|
||||||
$password = $_ENV['DB_PASS'] ?? 'secure_password';
|
$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";
|
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue