Symfony环境变量配置核心是通过Dotenv组件自动加载.env文件并分层覆盖,在YAML中用%env(...)%安全引用。具体为:第一步创建.env定义APP_ENV、DATABASE_URL等;第二步按.env→.env.{env}→.env.{env}.local优先级叠加;第三步在YAML中用%env(resolve:VAR)%等语法引用并类型转换;第四步用debug:dotenv等命令验证生效。
Symfony
环境变量
配置核心在于
.env文件加载 + 环境感知覆盖 + YAML中安全引用
,不是手动设全局变量,而是靠Dotenv组件自动注入并分层生效。
第一步:创建并填充.env基础文件
在项目根目录新建
.env
,用纯文本写入键值对(等号前后不加空格):
—— 决定当前激活哪个环境(dev/test/prod)
—— 加密、会话等必需的密钥
—— 数据库连接串
这些变量启动时自动进入
和
,无需
手动设置。
第二步:按优先级叠加本地与环境专用配置
Dotenv默认按顺序加载(后加载的覆盖前面同名变量):
—— 所有环境共享的基础配置(可提交到 Git)
—— 本地开发覆盖项(如调试开关、自定义端口),
必须加入
/
—— 按
值自动加载的环境专属配置
/
—— 最高优先级,仅本机该环境生效
例如生产环境运行时,实际生效的是:
逐层覆盖。
PHP基础-环境变量函数等
PHP基础-环境变量函数等
vip-kj-zhu/php-kj/4-jQuery-最流行的JS函数库.zip
下载
第三步:在YAML配置里安全引用环境变量
不要在
里硬写密码或URL,改用
语法:
—— 自动解析字符串
—— 直接取值
—— 强制转布尔类型(
/
)
—— 转整数
这种写法让配置保持干净,且类型转换失败会在
时报错,便于提前发现配置问题。
第四步:验证是否生效
执行命令检查环境变量是否被正确读取和解析:
—— 列出所有已加载的
文件及变量来源
—— 查看该变量最终值
—— 看框架配置中变量是否已展开
如果
但
没显示
,说明
未被识别——检查是否漏了
调用或
格式有误(比如用了中文等号或空格)。
APP_ENV=devAPP_SECRET=abc123...DATABASE_URL=mysql://root:pass@127.0.0.1:3306/myappMAILER_DSN=smtp://user:pass@smtp.example.com:587$_ENV$_SERVERputenv().env.env.local.gitignore.env.dev.env.prodAPP_ENV.env.dev.local.env.prod.local.env → .env.prod → .env.prod.localconfig/packages/*.yaml%env(...)%database_url: '%env(resolve:DATABASE_URL)%'secret: '%env(APP_SECRET)%'debug: '%env(bool:APP_DEBUG)%'truefalsemax_items: '%env(int:MAX_ITEMS)%'cache:clearphp bin/console debug:dotenv.env*php bin/console debug:container --env-var=DATABASE_URLphp bin/console debug:config framework --env=prodAPP_ENV=proddebug:dotenv.env.prodAPP_ENVloadEnv().env