生产环境应使用 composer install --no-dev --optimize-autoloader --classmap-authoritative 精简并优化依赖;2. 必须提交 composer.lock 并在部署时严格安装锁定版本;3. 依赖安装应在 CI/CD 阶段完成,生产环境不执行 Composer 命令;4. 定期在预发环境检查过期和漏洞包,确保安全性与兼容性。

在生产环境部署时,Composer 的使用应以安全、性能和可重复性为核心目标。以下是经过验证的最佳实践。
只部署必要的文件
生产环境不应包含开发依赖或源码管理文件。使用以下方法精简部署内容:
- 运行
composer install --no-dev,避免安装 phpunit、phpcs 等仅用于开发的包 - 配合
--optimize-autoloader和--classmap-authoritative提升自动加载性能 - 通过 .gitignore 或部署脚本排除
tests/、.github/、CHANGELOG.md等非必要文件
锁定依赖版本并提交 composer.lock
务必提交 composer.lock 到版本控制。它确保所有环境(包括生产)安装完全相同的依赖版本,避免因 minor 或 patch 升级引入意外行为。
部署流程中始终使用 composer install(而非 update),这样 Composer 会严格按照 lock 文件安装,保证一致性。
避免在生产机执行 composer 命令
生产服务器应尽可能“只读”和轻量化。最佳做法是在构建阶段(CI/CD 环境)完成依赖安装:
- 在 CI 流程中运行
composer install --no-dev --optimize-autoloader - 将生成的代码包(含已安装的 vendor/)打包并部署到生产
- 生产机无需安装 Composer,也不执行任何包管理命令
定期更新并测试依赖
虽然生产环境使用锁定版本,但仍需主动管理依赖安全与兼容性:
- 在开发或预发环境定期运行
composer outdated检查过期包 - 结合安全扫描工具(如 SensioLabs Security Checker 或 Symfony CLI)检测已知漏洞
- 更新后重新生成 composer.lock 并走完整测试流程
基本上就这些。关键是把依赖解析和安装移到部署前阶段,让生产环境更稳定、更安全。










