composer install漏装包是因为它严格按composer.lock还原依赖,若lock文件缺失、过期或与composer.json不一致,就会跳过未锁定的包;常见原因包括lock未提交、新增包后未update、platform配置不匹配或--no-dev跳过dev依赖。

composer install 下载的包不全,通常不是命令本身出错,而是它严格按 composer.lock 还原依赖 —— 如果这个文件缺失、过期或与 composer.json 不一致,就会漏装、错装甚至跳过某些包。
为什么 composer install 会漏掉你期望的包?
它只装 composer.lock 里明确记录的版本,不读 composer.json 的最新声明。常见触发场景:
-
composer.lock文件被误删或没提交到 Git,导致本地没有锁定记录 -
composer.json新增了包但没运行composer update生成新 lock 文件 - 团队成员用了不同 PHP 版本或平台(如 Windows vs Linux),
composer.lock中的platform配置导致某些包被跳过 - 某个包在
require-dev里,但你执行的是composer install --no-dev
composer install 和 composer update 到底该用哪个?
简单判断:想复现线上环境(比如部署、CI)→ 用 composer install;想升级或新增包 → 先改 composer.json,再跑 composer update(或 composer update vendor/package)。
容易踩的坑:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 直接改
composer.json后只跑composer install→ 不生效,lock 文件没更新 - 在 CI/CD 中用了
--ignore-platform-reqs,但本地开发没加,导致某些包(如 ext-gd)在 install 阶段被跳过 -
composer update没加--with-all-dependencies,导致子依赖没同步更新,引发兼容问题
如何快速验证是不是 lock 文件问题?
执行这条命令:
composer show --installed | wc -l
再对比 composer.lock 里 packages 数组长度(可用 jq '.packages | length' composer.lock)。如果不等,说明 install 没装全。
补救操作:
- 有
composer.lock但结果不对 → 先rm -rf vendor,再重跑composer install - 没
composer.lock→ 确认composer.json正确后,跑composer update --lock(仅生成 lock,不改 vendor) - 怀疑平台限制 → 查看
composer.lock开头的platform字段,或临时加--ignore-platform-reqs测试

















