Symfony 4: Uncaught RuntimeException: переменная окружения APP_ENV не определена - PullRequest
0 голосов
/ 30 апреля 2018

Я занимаюсь разработкой нового приложения Symfony 4.0 в док-контейнере (контейнер Apache SSL перенаправляет в контейнер Symfony). Все хорошо для среды разработки. В Docker-контейнере APP_ENV установлен на prod (проверяется путем ввода запущенного Docker-контейнера и выдачи команды SET). Я удалил Symfony / Dotenv из композитора ... все хорошо, без ошибок.

Но, звоня на мой сайт, он все равно говорит мне, что APP_ENV не определен. Чего мне не хватает?

Я читал здесь о дублировании APP_ENV в "/ etc / environment". Я еще не видел этого в документах Symfony. Любой намек на этот источник?

Спасибо, Вольфрам

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

У меня возникла та же проблема, однако в документации Symfony относительно перевода Symfony в рабочий режим с Apache они сообщают следующее:

Имя_сервера domain.tld ServerAlias ​​www.domain.tld

DocumentRoot /var/www/project/public
<Directory /var/www/project/public>
    AllowOverride None
    Order Allow,Deny
    Allow from All

    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
</Directory>

# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
# <Directory /var/www/project>
#     Options FollowSymlinks
# </Directory>

# optionally disable the RewriteEngine for the asset directories
# which will allow apache to simply reply with a 404 when files are
# not found instead of passing the request into the full symfony stack
<Directory /var/www/project/public/bundles>
    <IfModule mod_rewrite.c>
        RewriteEngine Off
    </IfModule>
</Directory>
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined

# optionally set the value of the environment variables used in the application
#SetEnv APP_ENV prod
#SetEnv APP_SECRET <app-secret-id>
#SetEnv DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name"

Обратите внимание на эту часть (чуть выше):

# optionally set the value of the environment variables used in the application
#SetEnv APP_ENV prod
#SetEnv APP_SECRET <app-secret-id>
#SetEnv DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name"

Установка переменных среды здесь будет работать (с докером), и для index.php Symfony не требуется хаков.

0 голосов
/ 08 мая 2018

Я хотел бы поделиться ответом, который я нашел: В среде Docker $ _ENV var используется для получения переменных среды. Команда Symfony реализовала получение переменных среды в $ SERVER.

Документировано здесь: https://github.com/symfony/recipes/issues/331

Патч в index.php (предоставленный по ссылке выше) временно решит эту проблему.

Вольфрам

...