Fix DB connection in app.php - use same approach as public/index.php with Dotenv
This commit is contained in:
parent
8a4d30de1d
commit
23a8dbcaf6
42
app.php
42
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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue