Symfonyob娱乐下载 4.2新增功能:为每个环境定义env变量
2018年10月30日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
自引进以来DotEnv组件在Syob娱乐下载mfony 3.3中,我们一直在努力改进使用env变量来配置Symfony应用程序的体验。在Syob娱乐下载mfony 4.2中,我们添加了一个新的loadForEnv ()
方法允许您为每个环境定义不同的env变量。
而不是创建一个单一.env
文件在你的项目的根目录,你现在可以创建一个或多个env var文件。env变量的值是按以下顺序查找的:
.env APP_ENV.local美元。
(不要将此文件提交到存储库)为本地机器定义特定于环境的覆盖;.env APP_ENV美元。
(将此文件提交到存储库)并为所有开发人员/机器定义特定于环境的默认值;.env.local
(不要将此文件提交到存储库)重写main.env
仅为本地计算机配置;.env
(将此文件提交到存储库)并定义应用程序中使用的env变量的默认值。
我们正在开发一个Symfony Fleob娱乐下载x配方,将这个新特性引入到完整的Symfony框架中(参见ob娱乐下载symfony /食谱# 466).如果你不想改变你现有的应用程序,没有必要改变任何东西,但新项目将获得最新的食谱版本,有以下变化:
.env
更名为.env.local
(“gitignored”)。.env.dist
更名为.env
(并提交给共享存储库)。
发表在#生活在边缘
评论
Jaik:我必须承认,我仍然不明白为什么特定于环境的env文件的用例还没有被参数覆盖
问得好!我们刚刚讨论了recipe pull request。实际上,您可以使用特殊的参数语法在每个环境的基础上设置环境变量。但是,至少,它比。env更不友好。用于覆盖的Dist文件(在安装phpunit-bridge时将为您安装)。
问得好!我们刚刚讨论了recipe pull request。实际上,您可以使用特殊的参数语法在每个环境的基础上设置环境变量。但是,至少,它比。env更不友好。用于覆盖的Dist文件(在安装phpunit-bridge时将为您安装)。
> Jaik:你是否建议在每个symfony环境配置中不再使用参数,而是使用环境变量?ob娱乐下载
啊,不,我不是故意这么说的。大多数时候,在配置文件中覆盖环境配置仍然更有意义——例如services_test。Yaml或config/packages/test/*。或者,就像我们有两个不同的独白。Yaml文件的开发vs prod环境。您希望提交这些更改—它们是代码。但是,对于已经存储在.env中的值(例如DATABASE_DSN),能够有一个' .env '要简单得多。测试vs知道创建一个config/packages/ Test /doctrine。Yaml文件,其中包含重新设置database_dsn所需的配置。这是我喜欢这一变化的主要动机。
好问题!有我参加这些讨论很有帮助!
干杯!
啊,不,我不是故意这么说的。大多数时候,在配置文件中覆盖环境配置仍然更有意义——例如services_test。Yaml或config/packages/test/*。或者,就像我们有两个不同的独白。Yaml文件的开发vs prod环境。您希望提交这些更改—它们是代码。但是,对于已经存储在.env中的值(例如DATABASE_DSN),能够有一个' .env '要简单得多。测试vs知道创建一个config/packages/ Test /doctrine。Yaml文件,其中包含重新设置database_dsn所需的配置。这是我喜欢这一变化的主要动机。
好问题!有我参加这些讨论很有帮助!
干杯!
Burak Bolat
2018年10月31日如是说在06:05
谢谢瑞安。
Asmir Mustafic
2018年11月3日如是说在23:54
这让我很困惑……
我们有环境变量的环境
我们有环境变量的环境
很大的改变,在phpunt .xml.dist和phpunt .xml中处理test env的参数不是很直观。
还没有使用参数解决的用例是什么?
此外,我同意我的朋友:https://twitter.com/storresi/status/1057242707914043392
Ryan Weaver is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now有没有其他项目使用类似的设置?
很棒的问题/评论。实际上,这个新的设置是为了遵循其他应用程序(如Create React App和Rails)所使用的标准。所以,我们正在变得“更加”标准化。
但是,这并不是我对此感到兴奋的“真正”原因。真正的原因是,它使我们能够通过这个食谱PR: https://github.com/symfony/recipes/pull/466/files#diff-d611993c75871b5e812244b9a8cf54d4大幅提高测试环境中的env varsob娱乐下载
目前你需要在phpunit.xml.dist中复制你的env vars(所有的)…即使在测试环境中只有少数需要不同。在上面的食谱PR中,建议引入一个新的src/bootstrap.php文件,所有东西都使用它(phpunit, public/index.php & bin/console),它将以一致的方式加载环境变量。通过结合。env的能力。测试文件,您可以轻松地调整您的测试环境设置。这是我认为需要改进的大问题。
除了食谱公关,对大多数人来说,这个变化并不意味着什么。正如文中提到的,.env。Dist将变成。env(并被提交),而。env将变成。env。本地的(且不被提交)。但这只是名字的变化。
干杯!