如何为 symfony 设置环境变量。
例如,如果我运行我的项目,它应该分离环境并执行操作,例如 ---
http: //production.com -> prod * environment *
http: //localhost:9200 -> * dev * environment --- for elasticsearch
http: //localhost:8000 -> * dev * environment --- for doctrine/mysql
因此,如果我在本地主机上运行 mysql 请求,它应该在
发出请求http: //localhost:8000
如果我对 elasticsearch 提出请求,它应该在以下位置提出请求
http: //localhost:9200
如果它在生产环境中运行,它应该在
处执行请求http: //production.com:9200 --- elasticsearch
http: //production.com:8000 --- doctrine/mysql
我认为它可以在 parameters.yml
中完成,但我真的不知道如何完成。
谁能帮我解决这个问题。 非常感谢高级。
最佳答案
我不确定这里的问题是什么,所以我会给你一个更笼统的答案。
Symfony 有一个非常好的方法来为不同的情况(或环境)配置你的项目。你应该看看 official documentation这深入地解释了事情。
默认情况下,Symfony 为不同的环境提供了 3 种配置:
app/config/config_dev.yml
用于开发app/config/config_prod.yml
用于生产app/config/config_test.yml
用于(单元)测试
这些配置文件中的每一个都可以覆盖基础配置文件 app/config/config.yml
中的设置。你会在那里存储你的一般/通用设置。每当您需要为特定环境覆盖某些内容时,只需转到环境配置并进行更改即可。
假设您在 app/config/config.yml
中有以下基本配置:
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_mysql
host: "%prod_database_host%"
port: "%prod_database_port%"
dbname: "%prod_database_name%"
user: "%prod_database_user%"
password: "%prod_database_password%"
charset: UTF8
现在假设,每个环境有 3 个不同的数据库 - prod
、dev
和 test
。这样做的方法是覆盖环境配置文件中的配置(比方说 app/config/config_dev.yml
:
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_mysql
host: "%dev_database_host%"
port: "%dev_database_port%"
dbname: "%dev_database_name%"
user: "%dev_database_user%"
password: "%dev_database_password%"
charset: UTF8
将必要的 %dev_*%
参数添加到您的 app/config/parameters.yml.dist
和 app/config/parameters.yml
。现在,无论何时使用 dev
环境打开应用程序,它都会连接到参数中指定的数据库 (%dev_database...%
)。
差不多就这些了。您可以对需要在特定环境中更改的任何配置执行相同的操作。你绝对应该看看文档。它通过示例直接解释。
关于mysql - 为 doctrine 和 elasticsearch 设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32479992/