Symfony 4:如何在我的本地服务器中使用两个不同的环境
Symfony 4: how to use two different environments in my local server
我最近开始使用 Symfony 4。
在开发过程中,我喜欢有两种不同的环境:一种用于开发(使用我们在固定装置上的一些虚假数据浏览网站),另一种用于测试,我在其中执行 behat 测试,在每次测试时重置数据库。
在以前的 symfony 版本中,我只有两个不同的数据库:mysite_dev 和 mysite_test 以及两个具有正确数据库配置的参数文件(parameters_dev.yml 和 parameters_test.yml) .
但是对于 Symfony 4 和 .env 配置文件,我看不到这样做的方法。我看不到有两组 ddbb 参数并且能够 运行 php bin/console doctrine:schema:update --env=test 或 php bin/console doctrine:schema:update --env=dev.
有什么想法吗?谢谢!
这很简单:您的命令仍然可以使用 --env
引用一个环境,每次您需要从一个环境切换到另一个环境时,您基本上有两个选择:
- 手动更改
.env
文件
- 创建第二个 "vhost"(或等同物),您可以在其中存储您通常放入
.env
中的所有变量,如 here 所述
如何在您的配置中使用不同的 url 变量?
# config/packages/dev/doctrine.yaml
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL_DEV)%'
# config/packages/test/doctrine.yaml
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL_TEST)%'
还要考虑默认配置文件中的这条评论
parameters:
# Adds a fallback DATABASE_URL if the env var is not set.
# This allows you to run cache:warmup even if your
# environment variables are not available yet.
# You should not need to change this value.
env(DATABASE_URL): ''
我最近开始使用 Symfony 4。
在开发过程中,我喜欢有两种不同的环境:一种用于开发(使用我们在固定装置上的一些虚假数据浏览网站),另一种用于测试,我在其中执行 behat 测试,在每次测试时重置数据库。
在以前的 symfony 版本中,我只有两个不同的数据库:mysite_dev 和 mysite_test 以及两个具有正确数据库配置的参数文件(parameters_dev.yml 和 parameters_test.yml) .
但是对于 Symfony 4 和 .env 配置文件,我看不到这样做的方法。我看不到有两组 ddbb 参数并且能够 运行 php bin/console doctrine:schema:update --env=test 或 php bin/console doctrine:schema:update --env=dev.
有什么想法吗?谢谢!
这很简单:您的命令仍然可以使用 --env
引用一个环境,每次您需要从一个环境切换到另一个环境时,您基本上有两个选择:
- 手动更改
.env
文件 - 创建第二个 "vhost"(或等同物),您可以在其中存储您通常放入
.env
中的所有变量,如 here 所述
如何在您的配置中使用不同的 url 变量?
# config/packages/dev/doctrine.yaml
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL_DEV)%'
# config/packages/test/doctrine.yaml
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL_TEST)%'
还要考虑默认配置文件中的这条评论
parameters:
# Adds a fallback DATABASE_URL if the env var is not set.
# This allows you to run cache:warmup even if your
# environment variables are not available yet.
# You should not need to change this value.
env(DATABASE_URL): ''