composer install 不支持 --force 参数,该参数不存在;应删除 vendor/ 目录后执行 composer install,必要时配合 composer dump-autoload 或清理 opcache。

composer install 为什么加 --force 没用
因为 composer install 根本不支持 --force 参数,加了会被忽略或报错。这不是“没生效”,而是命令压根不存在——Composer 官方从未实现这个 flag。你看到的某些博客或脚本里的写法,多半是混淆了 composer update 或自定义脚本行为。
想重装 vendor 目录,该用什么命令
真正能清掉旧依赖、从 composer.lock 重新安装的组合是:
- 删掉
vendor/目录(必须):rm -rf vendor(Linux/macOS)或rmdir /s vendor(Windows) - 删掉
composer.lock(可选,但决定是否“完全重装”):删了它,composer install就会退化成composer update行为,按composer.json重新解析最新兼容版本 - 再跑
composer install:此时它会读 lock 文件重建 vendor;如果 lock 已删,则先生成新 lock 再装
什么时候该删 lock,什么时候不该删
删 composer.lock 不是“更彻底”,而是“换策略”:它让依赖版本不再受约束,可能引入不兼容更新。团队协作中,除非明确要升级依赖树,否则只删 vendor 更安全。
- 想确保和同事、CI 环境一模一样 → 只删
vendor,保留composer.lock - 遇到奇怪的类找不到、函数不存在,且确认不是 autoload 问题 → 先试只删
vendor,再install - 需要升级某个包(比如修复安全漏洞),但
update xxx失败或卡住 → 删composer.lock+install是最后手段,但务必提交新 lock
autoload 未更新导致“重装像没重装”
常见假象:删了 vendor、重新 install,但 Class not found 还在。大概率是 composer dump-autoload 没跑,或者用了 --optimize-autoloader 但没清理旧映射。
- 每次重装后,建议补一句:
composer dump-autoload - 如果项目启用了 classmap 优化(如生产环境常用),记得加
-o:composer dump-autoload -o - 检查
vendor/autoload.php是否被缓存(比如 OPcache):PHP 8.0+ 可临时关掉opcache.enable=0排查
重装 vendor 不等于重刷 autoload 映射,这两步常被当成一回事,但实际是两个独立环节。










