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 文件 的改进处理

顺序:

  1. 您必须将 .env 推送到 git,但仅此 .env 文件
  2. Developpers 将创建 .env.local 以覆盖 .env 文件开发
  3. symfony/dotenv 在 composer.json
  4. require-dev 部分
  5. 何时部署:

    1. 获取 git 存储库(当然没有 /vendors)
    2. 运行 composer dump-env prod --empty 生成一个 .env.local.php 文件
    3. 通过 composer install --no-dev [Other prod args]
    4. 安装依赖项

您现在可以在不安装 symfony/dotenv 合成器的情况下享受您的产品环境。