我有一个使用Symfony 2.8构建的应用程序。现在,应用程序配置需要访问环境变量。这在Symfony 2.8(config.yml)中不起作用,
id: "%env(SOME_ID)%"
是否可以通过config.yml文件访问它。
答案 0 :(得分:3)
使用Symfony 2.8,您可以从服务器中声明一些外部参数:
对于Apache,使用SetEnv指令:
<VirtualHost *:80>
...
SetEnv SYMFONY__DATABASE__USER user
SetEnv SYMFONY__DATABASE__PASSWORD secret
SetEnv SYMFONY__SOME_ID 1234
...
</VirtualHost>
使用Nginx和fastcgi_param指令:
server {
...
location ~ ^/app\.php(/|$) {
...
fastcgi_param SYMFONY__DATABASE__USER user;
fastcgi_param SYMFONY__DATABASE__PASSWORD secret;
fastcgi_param SYMFONY__SOME_ID 1234
...
}
}
这些环境变量将通过一些转换传递给容器:
SYMFONY__
前缀已删除__
替换为句点。因此您可以按原样使用它们:
doctrine:
dbal:
driver: pdo_mysql
dbname: symfony_project
user: '%database.user%'
password: '%database.password%'
some_config:
id: '%some_id%'
您还可以传递一些PHP常量:
parameters:
some_id: "@=constant('SOME_ID')"
my_class.some_id: "@=constant('My_Class::SOME_ID')"
希望有帮助!