Неустранимая ошибка PHP: Uncaught RuntimeException: переменная окружения APP_ENV не определена - PullRequest
0 голосов
/ 08 декабря 2018

Я развертываю проект Symfony 4 на производстве.Создан файл .env с содержимым:

APP_ENV=prod
APP_DEBUG=0

Запустите composer:

$ composer install --no-dev --optimize-autoloader

Ошибка получения:

Script cache:clear returned with error code 255
!!  PHP Fatal error:  Uncaught RuntimeException:
 APP_ENV environment variable is not defined.
 You need to define environment variables for
 configuration or add "symfony/dotenv" as a Composer
 dependency to load variables from a .env file. in 
/var/www/symfony4_project/bin/console:20
!!  Stack trace:
!!  #0 {main}
!!    thrown in /var/www/symfony4_project/bin/console on line 20
!!  
Script @auto-scripts was called via post-install-cmd

Документация Symfony о развертывании и настройке среды оченьузкий и туманный.

Непонятно, где я должен устанавливать производственные среды.

С https://symfony.com/doc/current/configuration.html

предложение "Если вы решили установить реальные переменные среды на производствефайлы .env не будут загружены, если Symfony обнаружит, что существует реальная переменная среды APP_ENV и для нее задано значение prod. "

Где мне искать это настоящее существование APP_ENV?

Как янайдены на stackoverflow и github, есть много реализованных вопросов, но не так много ответов.

Спасибо за помощь.

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

вам нужно установить пакет symfony/dotenv composer для загрузки файла .env .Посмотрите официальную документацию https://symfony.com/doc/current/components/dotenv.html Компонент Dotenv анализирует файлы .env, чтобы сделать переменные среды доступными.

Запустите composer require --dev symfony/dotenv, это должно сработать.

0 голосов
/ 23 апреля 2019

Если у вас есть эта ошибка в prod начиная с Flex 1.2 в 2019 году, и вы не хотите использовать файл .env, но переменные среды вашей системы:

Это из-за изменений: https://symfony.com/blog/new-in-symfony-flex-1-2: Пожалуйста, прочитайте Улучшенная обработка .env файлов в блоге

Для того, чтобы:

  1. Вы должны нажать .envна git , но только этот .env file
  2. Разработчики создадут .env.local для переопределения .env файл для dev
  3. symfony / dotenv находится в require-dev разделе composer.json
  4. Когда вы хотитеdeploy:

    1. Получить репозиторий git (конечно, без / vendors)
    2. Запустить composer dump-env prod --empty, чтобы сгенерировать файл .env.local.php
    3. Установитьваши зависимости через composer install --no-dev [Другие аргументы prod]

Теперь вы можете наслаждаться своим prod env без symfony / dotenv composant.

0 голосов
/ 08 декабря 2018

Мне нужно немного больше информации, чтобы решить вашу проблему.

Прежде всего - просто чтобы быть уверенным: вы добавили зависимость dotenv своему композитору, как указано в вашем отладочном сообщении: composer требуется symfony /dotenv

Кроме того, что это за установка Symfony?Просто базовый симфония / скелет?В целом, если вы только что установили базовый symfony / sekleton или остов сайта, изменение значения APP_ENV в .env должно работать!Но мы с этим справимся.

Пожалуйста, убедитесь, что вы установили dotenv и предоставьте информацию, которую я ищу.

...