我正在生产中部署Symfony 4项目。 创建的.env文件内容如下:
APP_ENV=prod
APP_DEBUG=0
运行作曲家:
$ 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
语句“如果您决定在生产环境中设置真实的环境变量,则如果Symfony检测到存在真实的APP_ENV环境变量并将其设置为prod,则不会加载.env文件。
我应该在哪里寻找APP_ENV的真实存在?
正如我在stackoverflow和github上发现的那样,实现了很多问题,但没有太多答案。
感谢帮助。
答案 0 :(得分:2)
您需要安装symfony/dotenv
作曲家程序包才能加载 .env 文件。
看看官方文档https://symfony.com/doc/current/components/dotenv.html
Dotenv组件解析.env文件以使环境变量可访问。
运行composer require --dev symfony/dotenv
,应该可以。
答案 1 :(得分:0)
我需要更多信息来解决您的问题。
首先-请确保:是否按照调试消息中的提示将dotenv依赖项添加到了作曲家:作曲家需要symfony / dotenv
此外,它是一种什么样的symfony安装?只是基本的symfony /骨骼? 通常,如果您只是安装了基本的symfony / sekleton或网站骨架,则更改.env中APP_ENV的值应该可以!但是我们会解决的。
请确认您已安装dotenv并提供所需的信息。
答案 2 :(得分:0)
如果自2019年Flex 1.2起在生产中出现此错误,并且您不想使用.env文件,而是要使用系统的环境变量:
这是由于变化:
https://symfony.com/blog/new-in-symfony-flex-1-2:
请阅读改进博客上.env
文件的处理
顺序:
要部署时:
composer dump-env prod --empty
生成一个.env.local.php文件composer install --no-dev
[其他产品参数] 现在,您无需安装 symfony / dotenv 作曲家就可以享受产品环境。