Windows下vendor目录删除失败主因是进程占用或权限未释放,需先用resmon查句柄并结束相关进程(如IDE、PHP服务),Linux则多因文件只读位导致,应修复chmod权限后再执行composer install。

直接删不掉 vendor 目录,不是 Composer 有问题,而是 Windows 在锁文件、Linux 在设只读位——得先解绑进程或修复权限,再让 Composer 正常走流程。
Windows 下 Could not delete vendor/xxx 是谁在占着不放?
本质是文件句柄没释放,常见占用方有:
- IDE(PHPStorm、VS Code)后台扫描
vendor/,哪怕你只打开了项目根目录 - 终端里正在运行的
phpunit或php -S进程,可能正加载vendor/bin/下的脚本 - Windows 资源管理器开了“预览窗格”或“详细信息窗格”,缩略图生成器会锁住
vendor/里的二进制文件 - 杀毒软件(尤其是 Windows Defender 实时保护)刚扫描完
vendor/,句柄延迟释放
别急着删,先用 resmon 查:Win+R → 输入 resmon → “CPU” 标签页 → “关联的句柄” 搜 vendor\,看到哪个进程就右键“结束进程”。
Linux/macOS 报 Permission denied 却不是权限不够?
错误提示有误导性。真正原因是某些文件被设为只读(chmod 444),常见于:
- 从 Windows 同步过来的项目(Git 检出时保留了只读属性)
- 某些包的
post-install-cmd脚本误执行了chmod 444 - Docker 容器中
umask 027导致新建文件无组写权限
验证命令:find vendor -not -writable -type f | head -5。真有只读文件,再批量修复:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
find vendor -type f -not -writable -exec chmod 644 {} \;
find vendor -type d -not -writable -exec chmod 755 {} \;
切记别用 sudo composer install,后续普通用户操作会连锁失败;改用 chown -R $USER:$USER vendor 归还所有权。
composer remove 执行完 vendor/ 还在?这是设计使然
Composer 2.2+ 的 composer remove 默认会删 vendor/ 子目录,但前提是它能成功调用系统删除命令。一旦遇到锁或只读,它就卡在“删不动”这一步,不会回退或报错,只会静默失败。
- 确认是否真执行了物理删除:运行
ls vendor/package-name,若目录还在,说明删除阶段被阻断 - 不要手动
rm -rf vendor/package-name—— 这会导致composer.lock和磁盘状态不一致 - 安全补救:先
composer remove package/name --no-update(只改composer.json),再composer install触发完整同步
如果 vendor 已混乱(部分空目录、部分残留类文件),别修了,直接 rm -rf vendor composer.lock + composer install 更快——重建比缝合更可靠。
暴力清理前先关掉这些“隐形看门狗”
很多问题其实不来自 Composer 本身,而是环境干扰:
- OneDrive/Dropbox 同步目录里跑
composer install?它们会锁定变动中的文件,禁用同步再试 - Windows 快速启动开启时,休眠后文件句柄可能未完全释放,关掉它(电源选项 → 选择电源按钮的功能 → 更改当前不可用设置 → 取消勾选“启用快速启动”)
- CI 环境里
umask设得太严(如027),加一行umask 002到构建脚本开头
最易忽略的是:你以为关掉了 IDE,但它后台进程(如 phpstorm64.exe、jetbrains-agent.jar)还在跑。任务管理器里搜名字,全杀干净再操作。

















