php – 如何在Symfony4结构的参数文件中检索我的环境变量?
作者:互联网
我使用Symfony Flex进行了新的Symfony安装,新的骨架属于下一个Symfony 4目录结构.
我添加并配置了第一个第三方软件包:HWIOAuthBundle.此软件包用于通过Twitter使用两个秘密信息进行连接.
我在config / packages / hwi_oauth.yaml文件中声明了我的consumer_id和consumer_secret.
hwi_oauth:
firewall_names: [secured_area]
resource_owners:
twitter:
type: twitter
client_id: XXXXXMyIdXXXXX
client_secret: XXXXXMyTopSecretKeyXXXXX
我的申请工作正常.但我无法在github上提交我的秘密!
我想要一个像这样的hwi_oauth.yaml文件:
hwi_oauth:
firewall_names: [secured_area]
resource_owners:
twitter:
type: twitter
client_id: '%twitter_consumer_id%'
client_secret: '%twitter_consumer_secret%'
我阅读了有关新DotEnv软件包的Symfony4 best practices.
Using environment variables, while far from being perfect, have many benefits over what we currently do. Environment variables are a more “standard” way of managing settings that depend on the environment (no need to manage a parameters.yml.dist for instance).
正如最佳实践中所建议的那样,我将这两行附加到.env文件中:
TWITTER_CONSUMER_ID=XXXXXMyIdXXXXX
TWITTER_CONSUMER_SECRET=XXXXXMyTopSecretKeyXXXXX
但是我遇到了这个错误:
You have requested a non-existent parameter “twitter_consumer_id”.
我尝试使用%kernel.twitter_consumer_id%,%env.twitter_consumer_id%,%env(TWITTER_CONSUMER_ID)%,但没有成功.
最后一个测试是返回此错误消息:
An exception has been thrown during the rendering of a template (“Environment variable not found: “TWITTER_CONSUMER_ID”.”).
如何在hwi_oauth.yaml等参数文件中检索ENV变量?
解决方法:
您需要在引导过程中加载.env文件,以便使这些环境变量可用:
(new DotEnv())->load(__DIR__ . '/../.env');
您应该计划在开发,登台和生产中将密钥放在环境变量中.但是,你如何做到这一点取决于.在开发和暂存中,也许你使用.env文件,而在生产中你使用Apache注入.
就个人而言,我总是使用.env文件,并在我的存储库中保留一个空白文件.这样,它的部署非常简单,并且没有任何特殊情况.
如果您只想在特定环境中使用.env文件,则可以执行以下操作:
if (in_array(getenv('APP_ENV'), [ 'dev', 'test' ])) {
(new DotEnv())->load(__DIR__ . '/../.env');
}
标签:symfony4,php,symfony,environment-variables,symfony-flex 来源: https://codeday.me/bug/20191008/1869850.html