编程语言
首页 > 编程语言> > php – 如何在Symfony4结构的参数文件中检索我的环境变量?

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