如何在 Symfony 3.4 的控制器中获取环境参数?
How do I get an environment parameter in a controller In Symfony 3.4?
在 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
并显示以下消息:
Environment variable not found: "GOOGLE_DEVELOPER_KEY".
当我直接将密钥放入 app\config\services.yml
时,它工作正常:
parameters:
google.developer.key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
(但由于种种原因,这不是我想要的。)
我清除了 dev
缓存,重新启动了网络服务器,阅读了相关的 Symfony 文档(我认为),但没有成功。我想我错过了一步,但我不知道那是什么。任何提示将不胜感激。
symphony v3.4 documentation on Environment Variables 建议使用您的网络服务器配置环境变量。
我无法对此进行测试,因为我安装的是 Symfony v4,并且使用 /.env
文件来配置环境变量。
希望这在某种程度上有所帮助。
Symfony 3.4 不会自动加载 .env
文件。您必须修改 app_dev.php
才能加载文件:
use Symfony\Component\Dotenv\Dotenv;
...
$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/../app/config/.env');
为什么在控制器中初始化 Google_Client 而不是使用服务容器?
参见:https://symfony.com/doc/3.4/service_container.html
您可以在构造中使用键 developer_key 将开发者密钥传递到数组中。
在 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
并显示以下消息:
Environment variable not found: "GOOGLE_DEVELOPER_KEY".
当我直接将密钥放入 app\config\services.yml
时,它工作正常:
parameters:
google.developer.key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
(但由于种种原因,这不是我想要的。)
我清除了 dev
缓存,重新启动了网络服务器,阅读了相关的 Symfony 文档(我认为),但没有成功。我想我错过了一步,但我不知道那是什么。任何提示将不胜感激。
symphony v3.4 documentation on Environment Variables 建议使用您的网络服务器配置环境变量。
我无法对此进行测试,因为我安装的是 Symfony v4,并且使用 /.env
文件来配置环境变量。
希望这在某种程度上有所帮助。
Symfony 3.4 不会自动加载 .env
文件。您必须修改 app_dev.php
才能加载文件:
use Symfony\Component\Dotenv\Dotenv;
...
$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/../app/config/.env');
为什么在控制器中初始化 Google_Client 而不是使用服务容器?
参见:https://symfony.com/doc/3.4/service_container.html
您可以在构造中使用键 developer_key 将开发者密钥传递到数组中。