要彻底强制重装所有依赖,需先删 vendor 目录、再执行
composer clear-cache清空全局缓存,最后运行composer install;若需按 composer.json 重新解析并更新版本,则应删 vendor 和 composer.lock 后用composer update。

直接删 vendor 目录 + 运行 并不能真正“强制重新下载所有依赖”——因为 Composer 默认会复用本地 composer installcomposer cache,且可能跳过某些包的重安装(比如已满足版本约束时)。要彻底清空、重装、不走缓存,得组合操作。
删 vendor + 清 composer 缓存再重装
这是最稳妥的“从零开始”方式,适用于怀疑缓存损坏、版本错乱或想验证纯净环境时。
- 先删除整个
vendor目录:rm -rf vendor - 清空 Composer 全局缓存(影响所有项目):
composer clear-cache - 再执行安装(不走 lock 文件缓存,但会读取
composer.lock):composer install
注意: 严格按 composer installcomposer.lock 安装,不会升级版本;若想按 composer.json 重新解析并更新到最新兼容版,改用 (见下一条)。composer update
强制重装且忽略 lock 文件(用 update)
当你要丢掉 composer.lock 的约束,让 Composer 重新解析全部依赖树、拉取最新兼容版本(仍受 ^、~ 等版本运算符限制),就得用 update。
- 删
vendor和composer.lock:rm -rf vendorcomposer.lock - 运行
,它会重新生成composer updatecomposer.lock并下载所有依赖:composer update - 加
--with-all-dependencies可递归更新子依赖(默认只更新顶层):composer update--with-all-dependencies
⚠️ 风险: 可能引入不兼容变更,生产环境慎用;CI/CD 中应优先保留 composer updatecomposer.lock 并用 install。
跳过缓存、直连 packagist 下载(调试网络问题)
如果遇到包下载失败、超时或疑似缓存污染,可临时禁用缓存并强制走远程源。
- 用
--no-cache参数跳过本地缓存:composer install--no-cache - 指定镜像源(如阿里云)避免国外网络问题:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/ - 结合使用更彻底:
composer install--no-cache --prefer-dist(
--prefer-dist强制走 zip 包而非 git clone)
注意:--no-cache 不清除已有缓存,只是本次不读;真正清缓存还得靠 clear-cache。
vendor 目录残留导致重装失败的常见坑
有时删了 vendor,重装却报错(如 “class not found” 或 “autoload failed”),往往不是 Composer 问题,而是残留文件干扰:
-
vendor/autoload.php被某些 ide 或脚本缓存引用,删vendor后未重启 CLI 进程,导致旧 autoload 仍在内存中 -
vendor/bin下的二进制软链接未被完全清理(尤其在 windows WSL 或 macOS 上) -
composer.lock中记录的某个包路径与实际vendor结构不一致(例如之前用过pathrepo 类型,后切换回 packagist)
建议:删 vendor 后,顺手检查 ls -la vendor/ 确认为空;重装前运行 php -d "opcache.enable=0" -m | grep opcache 确保没启用 OPcache 干扰自动加载。