symfony - 如何在 Symfony 3.4 中的控制器中获取环境参数?
问题描述
在dev
Symfony 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 文档(我认为),但没有运气。我想我错过了一步,但我不知道那会是什么。任何提示将不胜感激。
解决方案
Symfony 3.4 不会自动加载.env
文件。你必须修改你app_dev.php
的加载文件:
use Symfony\Component\Dotenv\Dotenv;
...
$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/../app/config/.env');
推荐阅读
- javascript - 为什么轨道数据库数据没有保存在全球网络上
- python-3.x - 从在循环上运行的第二个模块访问变量
- php - Ratchet (php) 使用类 MessageComponentInterface 和 WampServerInterface 一起使用 websockets 和推送通知
- python - 在python中赋值之前引用的错误
- javascript - 如何检查我的 JSON 字段是否已定义?
- java - 如果有很多二级字段,如何解析嵌套的 json 文件?
- android - 将密钥文件放入 APK
- python - PermissionError 试图从 MacOS 上的 Python 访问桌面(shutil 或 os.chdir())
- php - 在 PHP 中从 XML 数据生成图像
- websocket - 用于聊天应用的 GRPC 流式传输或 WebSockets