php - 在 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')"
希望有帮助!
推荐阅读
- javascript - 具有最大槽的多维数组
- reactjs - TextInput 清除速度慢,屏幕上有很多内容
- ios - 如何为有条件地使用正确框架的设备和模拟器正确构建应用程序。(不是通用/胖框架)
- android - 当我不使用 proguard/R8 时,为什么 com.google.android.play.core 中的类名会被混淆/缩小?
- python - OpenCV VideoWriter 速度随着外部变暗而提高
- python - Python TCP 服务器未连接
- reactjs - sudo:反应脚本:找不到命令
- java - 带有 PRNG 的 Swing/AWT fillRect 循环不随机显示?
- vue.js - 如何更改路由器在Vue中状态更改时呈现的组件?
- r - 保留没有数据的级别 geom_histogram R