在Symfony 3.4应用程序的dev
环境中,我试图将凭据存储为环境变量。我不能让它工作,我无法弄清楚缺少什么。这就是我所拥有的:
在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文档(我认为),但没有运气。我想我错过了一步,但我无法弄清楚会是什么。任何提示都将不胜感激。
答案 0 :(得分:4)
Symfony 3.4不会自动加载.env
文件。您必须修改app_dev.php
才能加载文件:
use Symfony\Component\Dotenv\Dotenv;
...
$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/../app/config/.env');
答案 1 :(得分:0)
symphony v3.4 documentation on Environment Variables建议使用您的Web服务器配置环境变量。
我无法对此进行测试,因为我的安装是Symfony v4,它使用/.env
文件来配置环境变量。
希望这在某种程度上有所帮助。
答案 2 :(得分:0)