使用dotenv和Composer Scripts实现多环境配置管理,通过.env文件隔离敏感信息,利用脚本自动化切换环境配置,确保安全与可维护性。

在现代PHP项目开发中,不同环境(如本地、测试、生产)往往需要不同的配置。直接将配置写死在代码中不仅不安全,也难以维护。Composer虽然本身是依赖管理工具,但通过结合Composer Scripts和dotenv机制,可以有效管理多环境配置问题。
使用dotenv分离环境配置
dotenv是一种将环境变量存储在.env文件中的做法,每个环境拥有自己的.env文件,避免敏感信息提交到版本控制系统。
安装dotenv库:
composer require vlucas/phpdotenv在项目根目录创建.env文件:
APP_ENV=local DB_HOST=localhost DB_USER=root DB_PASS=secret CACHE_ENABLED=false
在入口文件或引导逻辑中加载配置:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);$dotenv->load();
之后即可通过getenv()或$_ENV读取变量。
为不同环境准备多个.env文件
可按环境命名配置文件,例如:
- .env.local
- .env.testing
- .env.production
部署时根据当前环境复制对应文件为.env,应用始终读取统一的文件名。
利用Composer Scripts自动化环境切换
Composer允许定义自定义脚本,可用于在安装或部署时自动设置配置文件。
在composer.json中添加scripts:
"scripts": {"post-install-cmd": [
"@php create-symlink-env.php production"
],
"dev-setup": "php create-symlink-env.php development",
"test-setup": "php create-symlink-env.php testing"
}
然后编写create-symlink-env.php脚本,根据传入参数链接正确的.env文件。
或者更简单的方式是在部署脚本中直接复制:
cp .env.production .env忽略通用.env,纳入环境模板
确保.gitignore中包含.env,防止敏感信息泄露。
同时提交.env.example作为模板,供新开发者参考:
cp .env.example .env
这样团队成员能快速搭建本地环境。
基本上就这些。Composer本身不处理配置,但通过Scripts触发动作,配合dotenv模式,能优雅解决多环境差异问题。关键是把配置从代码剥离,让部署流程自动适配目标环境。不复杂但容易忽略细节。










