我使用Symfony Flex进行了全新的Symfony安装,并使用新的骨架属于下一个Symfony 4目录结构。
我添加并配置了第一个第三方bundle: HWIOAuthBundle。该bundle用于使用两个秘密信息通过Twitter进行连接。
我在
我的应用程序运行良好。但我不能在Github上提交我的秘密!
我想要一个像这样的'hwi_oauth.yaml'文件:
我阅读了Symfony4最佳实践关于新的DotEnv包的内容。
我添加并配置了第一个第三方bundle: HWIOAuthBundle。该bundle用于使用两个秘密信息通过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%'
我阅读了Symfony4最佳实践关于新的DotEnv包的内容。
如最佳实践建议,我将这两行代码添加到使用环境变量,虽然远非完美,但比我们目前所做的有许多优点。环境变量是管理依赖于环境的设置的更加“标准”的方式(例如,无需管理parameters.yml.dist)。
.env
文件中:TWITTER_CONSUMER_ID=XXXXXMyIdXXXXX
TWITTER_CONSUMER_SECRET=XXXXXMyTopSecretKeyXXXXX
但我遇到了这个错误:
您请求了一个不存在的参数“twitter_consumer_id”。
我尝试使用 %kernel.twitter_consumer_id%
,%env.twitter_consumer_id%
,%env(TWITTER_CONSUMER_ID)%
,但都没有成功。
最后一个测试返回了这个错误信息:
在模板渲染期间抛出了异常(“找不到环境变量:“TWITTER_CONSUMER_ID”。”)。
我如何在像hwi_oauth.yaml
这样的参数文件中检索我的ENV变量?
DotEnv
组件加载.env
文件? - bishoppublic\index.php
包含if (!getenv('APP_ENV')) { (new Dotenv())->load(__DIR__.'/../.env'); }
,但是这个.env
没有被加载。现在它可以工作了!但是检查是为了确保我们不在生产中使用.env
。我不明白如何在开发中使用它并仍然保护我的生产环境...将测试!getenv('APP_ENV')
替换为in_array(getenv('APP_ENV'), ['dev','test'])
是否安全? - Alexandre Tranchant