在 symfony2 parameters.yml 中获取环境变量 [英] Get environment variables in symfony2 parameters.yml
问题描述
我正在尝试让我的 symfony2 应用程序在弹性豆茎上运行.我正在尝试在我的 parameters.yml 中获取环境变量(RDS_USER、RDS_PASSWORD 等...)以获取数据库凭据.
问题是 symfony2 需要环境变量以 SYMFONY__
为前缀,所以我可以在没有前缀的情况下获得这些变量吗?
I'm trying to get my symfony2 app running on elastic beanstalk. I'm trying to get environment variables (RDS_USER, RDS_PASSWORD, etc...) in my parameters.yml in order to get the database credentials.
The thing is symfony2 needs the environment variables to be prefixed by SYMFONY__
so I could I get these variables without prefixes ?
推荐答案
你可以加载一个 php 文件作为资源:
You can load a php file as a resource:
# app/config/config.yml
imports:
- { resource: parameters.php }
然后就很容易了:
// app/config/parameters.php
$container->setParameter('rds.user', getenv('RDS_USER'));
// if set via apache SetEnv use:
//$container->setParameter('rds.user', apache_getenv('RDS_USER'));
更新:自最初的答案以来,使用 <composer.json
中incenteev-parameters
组件的code>env-map特性.
UPDATE:
Since the original answer, a new solution was provided (thanks to @darragh-enright for pointing it out) using env-map
feature of incenteev-parameters
component in composer.json
.
"extra": {
"incenteev-parameters": {
"file": "app/config/parameters.yml",
"env-map": {
"database_host": "RDS_HOSTNAME",
"database_port": "RDS_PORT",
"database_name": "RDS_DB_NAME",
"database_user": "RDS_USERNAME",
"database_pass": "RDS_PASSWORD"
}
}
}
任何映射参数都将被环境变量的值覆盖.有关 env-map
的更多信息,请参阅 文档.
Any mapped parameter would be overwritten by value from environment variable. For more info on env-map
see documentation.
这篇关于在 symfony2 parameters.yml 中获取环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!