Невозможно загрузить Laravel APP_KEY/APP_NAME/и т. д. через переменную среды.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Невозможно загрузить Laravel APP_KEY/APP_NAME/и т. д. через переменную среды.

Сообщение Anonymous »

Я пытаюсь настроить развертывание приложения Laravel через Kubernetes и пытаюсь загрузить соответствующие переменные env через карту конфигурации и секреты k8s, поэтому мне не нужно никуда фиксировать файл .env, однако я у меня много проблем с тем, чтобы Laravel распознавал значения, когда они устанавливаются как переменные env сервера, а не записываются в файл .env.
На время забудьте элемент kubernetes, как я повторно развернули без каких-либо конфигураций/секретов и просто пытаюсь вручную установить переменные env и посмотреть, работает ли это.
Вот что происходит до сих пор:
1. РАЗВЕРНУТЬ ПРИЛОЖЕНИЕ БЕЗ КОНФИГУРАЦИИ/СЕКРЕТОВ K8S И ФАЙЛА .ENV
  • Ожидается: ошибка 404 из-за отсутствия файла .env.
  • Факт: ошибка 404 из-за отсутствия файла .env
1.1. КОПИРОВАТЬ .ENV.EXAMPLE В .ENV БЕЗ ИЗМЕНЕНИЙ
  • Ожидается: сообщение об ошибке об отсутствии app_key
  • Факт: ошибка сообщение об отсутствии app_key
1.2 УДАЛИТЬ ВСЕ, КРОМЕ ПЕРЕМЕННЫХ APP_* ИЗ .ENV И ОЧИСТИТЬ КЕШ
  • Ожидается: без изменений
  • Факт: без изменений
1.3. УДАЛИТЕ APP_NAME ИЗ .ENV И ПРОВЕРЬТЕ ЕГО В php artisan Tinker > echo env('APP_NAME')
  • Ожидается: ""
  • Факт: ""
1.4. ДОБАВЬТЕ ПЕРЕМЕННУЮ ENV НА СЕРВЕР, экспортируйте APP_NAME="TEST" И ПРОВЕРЬТЕ ЕЕ В TINKER
  • Ожидается: "TEST"
  • Факт: «ТЕСТ»
    (Подтверждено: Laravel получает переменную env с сервера)
1.5. ПРОВЕРЬТЕ APP_KEY В TINKER
  • Ожидается: ""
  • Факт: ""
    < /ul>
    1.5. УДАЛИТЬ ПУСТОЙ APP_KEY= ИЗ .ENV И ДОБАВИТЬ ПЕРЕМЕННУЮ ENV НА СЕРВЕР.
  • Ожидается: "base64:ePh21Fg+NhX0y9Y7AHZnGn/Vkb8KSMnprJC0Ac/eVZs="
  • Фактическое: "base64:ePh21Fg+NhX0y9Y7AHZnGn/Vkb8KSMnprJC0Ac/eVZs="(Подтверждено, что переменная env загружается с сервера)
1.6. ПРОВЕРЬТЕ САЙТ
  • Ожидается: сайт работает
  • Факт: появляется сообщение об ошибке об отсутствии app_key
1.7. ОЧИСТИТЬ КЕШ
  • Ожидается: сайт работает
  • Факт: появляется сообщение об отсутствующем app_key
  • Трассировка ошибки: [2024-05-20 15:09:55] local.ОШИБКА: не указан ключ шифрования приложения. {"Exception":"[объект] (Illuminate\Encryption\MissingAppKeyException(код: 0): ключ шифрования приложения не указан. В /var/www/site/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider .php:101)
1.8. ВРУЧНУЮ ПОМЕЩЕНИЕ APP_KEY В ФАЙЛ .ENV (

Код: Выделить всё

base64:XiH8Gd/5kXZfuqht5aptAjlkNshf4QzwvjGQ8GhbTWg=
) [Примечание: это отличается от того, что мы пробовали раньше]
  • Ожидается: сайт работает
  • Актуально: Сайт работает
1.9. ПРОВЕРЬТЕ ЗНАЧЕНИЕ APP_KEY в TINKER
  • Ожидается: «base64:XiH8Gd/5kXZfuqht5aptAjlkNshf4QzwvjGQ8GhbTWg=" — значение из файла .env
  • Фактическое: "base64:ePh21Fg+NhX0y9Y7AHZnGn/Vkb8KSMnprJC0Ac/eVZs=" – значение, которое мы установили при экспорте.
Итак, проблема, похоже, в том, что даже хотя функция env('APP_KEY') возвращает значение из среды сервера при проверке в Tinker, сайт не будет работать, если вы не поместите что-то в файл .env. И кажется, что он возвращает переменную env сервера от ремесленника, но, по-видимому, возвращает переменную из файла .env при загрузке через браузер, поэтому он считает, что она отсутствует, даже если переменная env на сервере установлена.
Это означает, что я не могу загрузить значение через переменную среды, а вместо этого должен специально записать его в файл .env.
Это не конкретный APP_KEY. проблема, поскольку я только что заметил, что то же самое происходит и с APP_NAME. Если я установлю его в файл .env, он найдет его правильно и установит в качестве заголовка вкладки браузера. Однако, если вместо этого я установлю его через переменную env на сервере, по умолчанию будет установлено значение «Laravel», несмотря на то, что мастер подберет значение «TEST».
Я делаю здесь что-то явно неправильное? Я совершенно не понимаю, как Laravel загружает переменные среды? Я просмотрел несколько руководств по тому, как сделать это с помощью секретов/конфигурационных карт Kubernetes, и все они загружают их в переменные среды, например, вместо записи файла .env.
Я очистил конфигурация и приложение также кэшируются несколько раз.
Larvel Framework 8.83.27
PHP 8.1.28
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/785 ... t-variable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»