在 symfony2 parameters.yml 中获取环境变量 [英] Get environment variables in symfony2 parameters.yml

查看:20
本文介绍了在 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.jsonincenteev-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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆