Composer install 不生成 .env 文件,因其仅负责依赖安装与脚本执行;需通过 post-install-cmd 调用 PHP 脚本检查并安全创建 .env(若不存在),避免覆盖、支持变量替换与权限设置,且须确保 .env.example 已提交而 .env 被 git 忽略。
为什么不能直接用 Composer install 生成 .env 文件
Composer 本身不处理环境配置文件,
只负责依赖安装和脚本执行,不会自动复制或渲染
模板。很多项目把
提交到 Git,但靠人工复制改名容易漏掉、出错,尤其 CI/CD 或新成员上手时。
在
composer
.
js
on 的 scripts 中调用 post-install-cmd
利用 Composer 的生命周期脚本,在
后自动检查并生成
(如果不存在)。关键点是:只在本地开发环境触发,避免污染生产部署。
确保
已存在且格式正确(例如 Laravel 风格的键值对)
脚本语言推荐用 PHP(跨平台、无需额外依赖),避免 shell 脚本在 Windows 下失效
不要用
简单覆盖——要检测目标文件是否存在,防止误删已有配置
更安全的做法:用专用 PHP 脚本替代内联命令
内联命令可读性差、难调试、无法做变量替换或校验。建议拆出独立脚本,比如
,再在
中引用:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
脚本能判断是否已存在
,跳过覆盖
支持简单模板变量替换(如
→
),只需传参或读取
环境变量
可加入权限设置(
),防止敏感信息被意外读取
Windows 用户不会因
或重定向符号报错
注意 .env 文件不应被 Git 跟踪,但 .env.example 必须提交
这是最常被忽略的配置前提。如果
被误提交,所有密钥都会泄露;如果
没提交,自动化就失去依据。
中必须包含
,且确认没被
反向取消忽略
应保留所有必要键(如
),值设为占位符(如
)
CI 环境通常通过 secret 注入变量,不需要生成
—— 可加判断:
模板管理的本质不是“让 Composer 做更多”,而是用它触发一次确定、幂等、可审计的操作。真正复杂的是变量注入逻辑和环境隔离,那部分得交给 dotenv 加载器或部署工具来承接。
composer install.env.env.examplecomposer install.env.env.examplecopy()"scripts": {
"post-install-cmd": [
"if (!file_exists('.env')) { copy('.env.example', '.env'); echo "\n.env file created from .env.example\n"; }"
]
}bin/init-env.phpcomposer.json.env{{APP_ENV}}localchmod 600 .envcp"scripts": {
"post-install-cmd": [
"php bin/init-env.php"
]
}.env.env.example.gitignore.env!/.env.env.exampleDB_HOST=127.0.0.1DB_PASSWORD=your_db_password_here.envif (getenv('CI') !== 'true') { ... }