首页 > 解决方案 > 如何在 Symfony 3.4 中的控制器中获取环境参数?

问题描述

devSymfony 3.4 应用程序的环境中,我试图将凭据存储为环境变量。我无法让它工作,我无法弄清楚缺少什么。这就是我所拥有的:

app\config\.env我定义了一个 API 密钥,如下所示:

GOOGLE_DEVELOPER_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

app\config\services.yml我有:

parameters:
    google.developer.key: "%env(GOOGLE_DEVELOPER_KEY)%"

在我的一个控制器中,我想将此参数传递给一个对象,如下所示:

    $client = new \Google_Client();
    $client->setDeveloperKey($this->getParameter('google.developer.key'));

对我来说,该设置看起来不错,但是当我尝试运行它时,我收到EnvNotFoundException以下消息:

未找到环境变量:“GOOGLE_DEVELOPER_KEY”。

当我直接把钥匙放进去时app\config\services.yml,它工作得很好:

parameters:
    google.developer.key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

(但这不是我想要的,出于各种原因。)

我清除了dev缓存,重新启动了 Web 服务器,阅读了相关的 Symfony 文档(我认为),但没有运气。我想我错过了一步,但我不知道那会是什么。任何提示将不胜感激。

标签: symfonyenvironment-variablessymfony-3.4

解决方案


Symfony 3.4 不会自动加载.env文件。你必须修改你app_dev.php的加载文件:

use Symfony\Component\Dotenv\Dotenv;
...
$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/../app/config/.env');

推荐阅读