结论:必须用 composer install 且确保存在 composer.lock 文件;因为 install 精确复现 lock 中的版本、commit hash 和路径哈希,而 update 会重新解析依赖导致版本不一致,引发运行错误。
直接说结论:用 composer install,不是 composer update,且必须确保项目根目录存在 composer.lock 文件。
为什么不能用 composer update 来“克隆依赖”
很多人误以为 composer update 是“同步别人项目的依赖”,其实它会根据 composer.json 重新解析最新兼容版本,忽略 composer.lock 的约束。结果就是:你装的包版本和原项目不一致,可能引发运行时错误、行为差异甚至测试失败。
真正克隆依赖的行为,是严格复现 lock 文件中记录的每个包名、版本号、commit hash(对 dev 分支)、以及安装路径哈希 —— 这只有 composer install 能做到。
-
composer install:读composer.lock→ 精确下载指定版本 → 不改 lock 文件 -
composer update:读composer.json→ 求解新依赖图 → 覆盖写入composer.lock - 首次克隆项目后没 run 过
install,vendor/目录为空或不完整,直接跑项目大概率报Class not found
composer install 执行前必须检查的三件事
它看起来简单,但失败常源于几个隐性前提没满足。