PHP Fatal error: Uncaught RuntimeException: APP_ENV environment variable is not defined
PHP Fatal error: Uncaught RuntimeException: APP_ENV environment variable is not defined
我正在生产环境中部署 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
句"If you decide to set real environment variables on production, the .env files will not be loaded if Symfony detects that a real APP_ENV environment variable exists and is set to prod."
我应该去哪里寻找这个真实的APP_ENV存在?
正如我在 Whosebug 和 github 上发现的那样,有很多相关的问题,但没有那么多答案。
感谢您的帮助。
我需要更多信息来解决您的问题。
首先 - 只是为了确定:您是否按照调试消息中的提示将 dotenv 依赖项添加到作曲家:composer require symfony/dotenv
另外,symfony 是什么安装方式?只是基本的symfony/skeleton?
一般来说,如果你刚刚安装了一个基本的 symfony/sekleton 或网站骨架,改变 .env 中 APP_ENV 的值应该可以工作!但我们会解决的。
请确认您安装了 dotenv 并提供我要查找的信息。
您需要安装 symfony/dotenv
composer 包来加载您的 .env 文件。
看看官方文档https://symfony.com/doc/current/components/dotenv.html
Dotenv 组件解析 .env 文件以使环境变量可访问。
运行 composer require symfony/dotenv
这应该有效。
如果您从 2019 年的 Flex 1.2 开始在产品中遇到此错误并且您不想使用 .env 文件而是系统的环境变量:
这是因为变化:
https://symfony.com/blog/new-in-symfony-flex-1-2 :
请阅读博客
上 .env
文件 的改进处理
顺序:
- 您必须将 .env 推送到 git,但仅此 .env 文件
- Developpers 将创建 .env.local 以覆盖 .env 文件开发
- symfony/dotenv 在 composer.json
的 require-dev 部分
何时部署:
- 获取 git 存储库(当然没有 /vendors)
- 运行
composer dump-env prod --empty
生成一个 .env.local.php 文件
- 通过
composer install --no-dev
[Other prod args] 安装依赖项
您现在可以在不安装 symfony/dotenv 合成器的情况下享受您的产品环境。
我正在生产环境中部署 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
句"If you decide to set real environment variables on production, the .env files will not be loaded if Symfony detects that a real APP_ENV environment variable exists and is set to prod."
我应该去哪里寻找这个真实的APP_ENV存在?
正如我在 Whosebug 和 github 上发现的那样,有很多相关的问题,但没有那么多答案。
感谢您的帮助。
我需要更多信息来解决您的问题。
首先 - 只是为了确定:您是否按照调试消息中的提示将 dotenv 依赖项添加到作曲家:composer require symfony/dotenv
另外,symfony 是什么安装方式?只是基本的symfony/skeleton? 一般来说,如果你刚刚安装了一个基本的 symfony/sekleton 或网站骨架,改变 .env 中 APP_ENV 的值应该可以工作!但我们会解决的。
请确认您安装了 dotenv 并提供我要查找的信息。
您需要安装 symfony/dotenv
composer 包来加载您的 .env 文件。
看看官方文档https://symfony.com/doc/current/components/dotenv.html
Dotenv 组件解析 .env 文件以使环境变量可访问。
运行 composer require symfony/dotenv
这应该有效。
如果您从 2019 年的 Flex 1.2 开始在产品中遇到此错误并且您不想使用 .env 文件而是系统的环境变量:
这是因为变化: https://symfony.com/blog/new-in-symfony-flex-1-2 : 请阅读博客
上.env
文件 的改进处理
顺序:
- 您必须将 .env 推送到 git,但仅此 .env 文件
- Developpers 将创建 .env.local 以覆盖 .env 文件开发
- symfony/dotenv 在 composer.json 的 require-dev 部分
何时部署:
- 获取 git 存储库(当然没有 /vendors)
- 运行
composer dump-env prod --empty
生成一个 .env.local.php 文件 - 通过
composer install --no-dev
[Other prod args] 安装依赖项
您现在可以在不安装 symfony/dotenv 合成器的情况下享受您的产品环境。