From: Aleksey Filippov Date: Mon, 19 Jan 2026 15:12:36 +0000 (+0300) Subject: [ERP-500] Fix: загрузка .env до конфига в yii console и api3 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=4844a1d398d907de205b00636a249ec524ef6277;p=erp24_rep%2Fyii-erp24%2F.git [ERP-500] Fix: загрузка .env до конфига в yii console и api3 - Исправлен порядок загрузки env.php в yii (console) - теперь до console.php - Добавлен env.php для api3 с загрузкой из erp24/.env - Исправляет ошибку "password authentication failed for user bazacvetov24" при запуске queue/listen (getenv() возвращал пустое значение) Co-Authored-By: Claude Opus 4.5 --- diff --git a/erp24/api3/config/env.php b/erp24/api3/config/env.php new file mode 100644 index 00000000..fe41f1aa --- /dev/null +++ b/erp24/api3/config/env.php @@ -0,0 +1,35 @@ +load(); + + // Обязательные переменные окружения для API3 + $dotenv->required([ + 'POSTGRES_PASSWORD', + 'COOKIE_VALIDATION_KEY', + ]); + + // Опциональные переменные с валидацией формата + $dotenv->ifPresent('POSTGRES_PORT')->isInteger(); + $dotenv->ifPresent('DB_PORT')->isInteger(); + $dotenv->ifPresent('DB_REMOTE_PORT')->isInteger(); + + foreach ($_ENV as $key => $value) { + if (is_scalar($value)) { + putenv("$key=$value"); + } + } +} catch (\Dotenv\Exception\InvalidPathException $e) { + putenv("APP_ENV=development"); + // Yii может быть еще не загружен, используем error_log + error_log('API3: Файл .env не найден: ' . $e->getMessage()); +} catch (\Dotenv\Exception\ValidationException $e) { + error_log('API3: Ошибка валидации .env: ' . $e->getMessage()); + throw $e; +} diff --git a/erp24/yii b/erp24/yii index be6c882f..3335652e 100755 --- a/erp24/yii +++ b/erp24/yii @@ -12,10 +12,13 @@ defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require __DIR__ . '/vendor/autoload.php'; + +// Загрузка .env ДО конфига, чтобы getenv() работал в db.php +require __DIR__ . '/config/env.php'; + require __DIR__ . '/vendor/yiisoft/yii2/Yii.php'; $config = require __DIR__ . '/config/console.php'; -require __DIR__ . '/config/env.php'; $application = new yii\console\Application($config); $exitCode = $application->run();