生产环境禁止运行 composer update,应在开发环境更新依赖并提交 composer.lock,部署时仅执行 composer install --no-dev 以确保版本一致性和稳定性。

在生产环境中直接运行 composer update 是高风险操作,可能导致依赖版本不一致、服务中断或引入不兼容更新。Composer 本身的设计建议是在开发环境完成依赖管理,生产环境只执行安装。以下是安全实践方式。
1. 不要在生产环境运行 composer update
composer update 会根据 composer.json 中的版本约束重新计算并写入 composer.lock 文件。一旦在生产环境执行,可能拉取到未经测试的新版本包,破坏应用稳定性。
- 始终在开发或 CI 环境中运行 composer update
- 将生成的 composer.lock 提交到版本控制系统
- 生产环境只运行 composer install,确保安装的是锁文件中指定的确切版本
2. 使用 composer install 部署依赖
生产部署时应使用:
composer install --no-dev --optimize-autoloader --class-map-authoritative- --no-dev:不安装 require-dev 中的开发依赖(如测试工具)
- --optimize-autoloader:优化类自动加载性能
- --class-map-authoritative:提升 autoloader 效率,适用于生产环境
3. 锁定 PHP 和扩展环境
确保生产环境与开发环境的 PHP 版本和扩展一致。可在 composer.json 中声明平台依赖:
"config": {"platform": {
"php": "8.1.0"
}
}
这样即使服务器 PHP 版本更高,Composer 也会按指定版本解析依赖。
4. 审查更新内容再合并
当需要更新依赖时:
- 在开发分支运行 composer update vendor/package
- 检查 composer.lock 变更,确认更新的版本范围
- 运行测试,验证兼容性
- 通过代码评审后合并到主分支










