【问题标题】:Error 500 "PHP Fatal error: Uncaught RuntimeException: APP_ENV environment variable is not defined." on Symfony app start错误 500 “PHP 致命错误:未捕获的 RuntimeException:未定义 APP_ENV 环境变量。”在 Symfony 应用启动时
【发布时间】:2017-12-29 20:57:08
【问题描述】:

我最近将一个新的 Symfony 4 项目部署到了​​一个 prod 服务器,我在其中设置(通过 ssh)APP_ENVAPP_SECRET 等作为环境变量。 printenvset 这两个命令都在它们的输出中列出了这些变量,所以我认为这部分一切都应该没问题。

我在网站上收到错误 500,日志返回 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.

我在这里缺少什么?

【问题讨论】:

    标签: symfony environment-variables symfony4


    【解决方案1】:

    [EDIT 2020] --> 使用 'symfony/dotenv'

    根据how to deploy 官方文档,您可以将作曲家文件中的“symfony/dotenv”从 require-dev 移动到 require,以便它也安装在生产环境中。然后你可以继续使用 .env.local 文件。

    如果你不想或不能使用 'symfony/dotenv'

    对于 Apache 和 Ubuntu,首先您需要激活 mod_env

    sudo a2enmod env
    sudo service apache2 restart
    

    然后将环境变量放入 .htacess 或 vhost 配置文件中。对于 SF4,.htacess 位于 /public 中,语法如下。我不知道顺序是否重要,我会说不,所以我将它们添加到文件的顶部。

    SetEnv APP_ENV prod
    SetEnv APP_SECRET fjsdkfj...
    SetEnv DATABASE_URL mysql://...
    

    现在一些随机有用的技巧:

    • 您不想提交 .htaccess 文件。将其添加到部署工具的共享部分。就我而言(easy-deploy-bundle)

      ->sharedFilesAndDirs(['public/.htaccess'])
      
    • 您需要复制 /etc/environment 中的环境变量,以便作曲家可以使用它……这个真的很麻烦,因为现在您复制了变量。所以 Symfony 团队说 env 变量更好,因为更安全和标准。但是复制信息一点也不安全。也许我做错了(这是完全可能的)。如果您知道如何避免这种情况,请分享。 printenv 命令将显示它是否配置正确。

    • 如果您在生产环境中使用 easy-deploy-bundle,请移除 composer 上的 --quiet 选项,以便在它失败时有一个明确的错误消息(例如,因为它找不到 env 变量)。还要检查 --no-dev 选项是否在这里,所以它不会安装 dotenv 包。

      ->composerInstallFlags('--prefer-dist --no-interaction --no-dev')
      

    【讨论】:

      【解决方案2】:

      系统变量对您的网络服务器不可用。该变量应在 vhost/htaccess 文件中定义。我假设您使用的是 Apache。

      【讨论】:

      • 我太笨了!非常感谢!
      【解决方案3】:

      如果您使用的是 nginx,则必须在池配置文件的末尾进行定义。

      php5

      /etc/php5/fpm/pool.d/www.conf

      php7

      /etc/php/7.1/fpm/pool.d/www.conf

      【讨论】:

        猜你喜欢
        • 2019-05-09
        • 2018-10-10
        • 1970-01-01
        • 2021-11-03
        • 2017-10-07
        • 1970-01-01
        • 2019-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多