删 vendor 目录后应执行 composer install,它会严格按 composer.lock 还原一致的依赖;误用 composer update 会导致不可控升级。若 lock 文件丢失,才需先运行 composer install 生成新 lock。

删了 vendor 目录后,直接 composer install 就行
只要项目根目录下还存在 composer.lock 文件,就不用重装所有包或重新解析依赖——composer install 会严格按 lock 文件还原出和之前完全一致的 vendor 目录结构与版本。这是最安全、最快、最推荐的做法。
常见错误是误用 composer update:它会忽略 composer.lock,重新计算依赖树、升级到符合 composer.json 约束的最新兼容版本,可能引入不兼容变更或破坏环境一致性。
- ✅ 正确操作:
composer install
- ❌ 错误操作:
composer update
(除非你明确想升级依赖) - ⚠️ 如果连
composer.lock也丢了,才需先运行composer install --no-dev
或composer install
(会自动生成新 lock),但此时结果不可复现
执行 composer install 前要确认的几件事
不是敲完命令就万事大吉。几个关键检查点常被跳过,导致失败或行为异常:
-
composer.json必须存在且语法正确(可用composer validate
检查) - PHP 版本需满足
composer.json中"php": ">=8.1"这类约束,否则报错Your requirements could not be resolved - 若项目含私有包(如 GitLab 私仓、Satis、Toran Proxy),需提前配置好认证(
auth.json)或仓库源(repositories) - 磁盘空间不足、临时目录无写权限、ZIP 扩展未启用,都可能导致解压失败,错误信息里通常带
failed to open stream: Permission denied或ziparchive::extractto(): failed to open stream
遇到 composer install 卡住或报错怎么办
最常见的卡顿发生在下载阶段,尤其国内网络直连 packagist.org 较慢;典型报错多和证书、代理、扩展缺失有关:
- 下载慢 → 临时切镜像源:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
(注意:该镜像已停用,推荐用https://packagist.laravel-china.org或阿里云源https://mirrors.aliyun.com/composer/) - SSL 报错(如
cURL error 60: SSL certificate problem)→ 不建议关校验,应更新 CA 证书或配置系统级信任链;临时调试可加-vvv查看详细错误路径 - 提示
ext-zip missing→ Ubuntu/Debian 上运行sudo apt-get install php-zip
,macOS 用brew install php@8.2-zip
(版本号对齐当前 PHP) - 权限错误(如
vendor/ does not exist and could not be created)→ 检查当前用户对项目目录是否有写权限,避免用sudo composer install
vendor 恢复后还要验证是否完整
命令跑完不代表一切正常。有些包的自动加载逻辑、二进制脚本、资源发布(如 Laravel 的 php artisan vendor:publish)不会在 install 中自动触发:
- 运行
composer dump-autoload -o
强制重建优化后的自动加载映射,避免类找不到(Class not found) - 检查
vendor/bin/下关键工具是否存在(如phpunit、phpcs),缺失说明对应包安装失败或未启用 bin 链接 - Laravel 项目需手动执行
php artisan config:clear && php artisan cache:clear
,防止旧缓存干扰 - 如果项目依赖某些包的 post-install-cmd 脚本(如生成 key、复制配置),而这些脚本没自动运行,得翻
composer.json的"scripts"段手动补上
composer update,以为“重新拉一遍”,结果把生产环境悄悄升级到了不兼容版本。










