在 Symfony 2.8 中使用现有的环境变量
Use Existing Environment Variable in Symfony 2.8
我有一个使用 Symfony 2.8 构建的应用程序。现在,应用程序配置需要访问一个环境变量。这在 Symfony 2.8 (config.yml),
中不起作用
id: "%env(SOME_ID)%"
有没有办法在 config.yml 文件中访问它。
使用 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')"
希望对您有所帮助!
我有一个使用 Symfony 2.8 构建的应用程序。现在,应用程序配置需要访问一个环境变量。这在 Symfony 2.8 (config.yml),
中不起作用id: "%env(SOME_ID)%"
有没有办法在 config.yml 文件中访问它。
使用 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')"
希望对您有所帮助!