]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-500] Fix: загрузка .env до конфига в yii console и api3
authorAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Mon, 19 Jan 2026 15:12:36 +0000 (18:12 +0300)
committerAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Mon, 19 Jan 2026 15:12:36 +0000 (18:12 +0300)
- Исправлен порядок загрузки 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 <noreply@anthropic.com>
erp24/api3/config/env.php [new file with mode: 0644]
erp24/yii

diff --git a/erp24/api3/config/env.php b/erp24/api3/config/env.php
new file mode 100644 (file)
index 0000000..fe41f1a
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Загрузка переменных окружения для API3
+ * Файл .env должен находиться в корне erp24/
+ */
+
+try {
+    $dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__, 2));
+    $dotenv->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;
+}
index be6c882f491a23f08419d6fdf61d3b1b0694fa2e..3335652e0cedf7f584c65a5a96aef056872546a6 100755 (executable)
--- 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();