[Symfony6 系列]环境变量

开发的过程中需要至少本地、测试和生产三个环境,开发和测试需要更多的调试信息和日志等数据,生产环境则需要最好的性能。另外部分连接(数据库)地址生产与本地也不相同,这就需要不同的环境中使用不同的配置。

在所有环境中,如果存在以下文件,程序自动加载

后者优先于前者:

  • .env 包含应用所需环境变量的默认值
  • .env.local 本地文件,具有本地覆盖
  • .env.$APP_ENV 特定环境的配置文件
  • .env.$APP_ENV.local 本地特定于环境的覆盖

运行的环境变量覆盖 .env 文件。

第一步构建一个开发环境:

#从.env 复制一个新的环境变量
composer dump-env local
#检查
php bin/console debug:dotenv

修改环境变量配置文件,设置参数

# .dev.env
# 设置对应的参数
APP_ENV=dev
APP_SECRET=isasecretvalue

配置文件所在目录

symfony62/
├─ config/
│  ├─ packages/
│  ├─ ├─ framework.yaml
│  ├─ bundles.php
│  ├─ routes.yaml
│  └─ services.yaml
├─ ...

routes.yaml 定义路由;

services.yaml 服务;

bundles.php 应用程序包启用;

环境变量可以在packages文件下的配置文件中被调用

framework:
    secret: '%env(APP_SECRET)%'

根据不同的环境变量选择不同的配置内容

framework:
    secret: '%env(APP_SECRET)%'
#开发环境密钥未123456
when@dev:
    framework:
        secret: '123456'

与环境变量类似的还有一个参数功能,在services.yaml文件中配置

# config/services.yaml
parameters:
    app.admin_email: 'something@example.com'

可以通过变量名称被读取到    

framework:
    secret: '%env(APP_SECRET)%'
    email_address: '%app.admin_email%'

发表评论