From 4844a1d398d907de205b00636a249ec524ef6277 Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Mon, 19 Jan 2026 18:12:36 +0300 Subject: [PATCH] =?utf8?q?[ERP-500]=20Fix:=20=D0=B7=D0=B0=D0=B3=D1=80?= =?utf8?q?=D1=83=D0=B7=D0=BA=D0=B0=20.env=20=D0=B4=D0=BE=20=D0=BA=D0=BE?= =?utf8?q?=D0=BD=D1=84=D0=B8=D0=B3=D0=B0=20=D0=B2=20yii=20console=20=D0=B8?= =?utf8?q?=20api3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - Исправлен порядок загрузки 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 --- erp24/api3/config/env.php | 35 +++++++++++++++++++++++++++++++++++ erp24/yii | 5 ++++- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 erp24/api3/config/env.php 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(); -- 2.39.5