symfony - 如何在 Symfony 3.4 中的 Controller 中获取环境参数?

标签 symfony environment-variables symfony-3.4

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

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

GOOGLE_DEVELOPER_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

app\config\services.yml我有:
parameters:
    google.developer.key: "%env(GOOGLE_DEVELOPER_KEY)%"

在我的一个 Controller 中,我想将此参数传递给一个对象,如下所示:
    $client = new \Google_Client();
    $client->setDeveloperKey($this->getParameter('google.developer.key'));

对我来说,这个设置看起来不错,但是当我尝试运行它时,我得到一个 EnvNotFoundException带有以下消息:

Environment variable not found: "GOOGLE_DEVELOPER_KEY".



当我把 key 放进 app\config\services.yml直接,它工作得很好:
parameters:
    google.developer.key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

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

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

最佳答案

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

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

关于symfony - 如何在 Symfony 3.4 中的 Controller 中获取环境参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335804/

相关文章:

java - 在多台服务器上运行一个文件

mysql - 使用嵌套类别反序列化 JSON

forms - 在 symfony2 表单构建器中访问底层实体

php - Symfony2 路由不支持的键

symfony - 在表单中选择选项下拉列表

php - SonataAdminBundle 和 OneToOne 的关系

Symfony LTS : how to upgrade from 2. 8 到 3.4?

symfony - Doctrine Extension Translatable 不检索翻译

java - 在 tomcat7 maven 插件中设置 ENV 变量

environment-variables - 作为可执行文件的 csh 脚本不设置环境