vendor目录为空但命令不报错,最常见原因是当前路径不在项目根目录(即含composer.json的目录),导致vendor被创建在子目录中;应先用pwd或cd确认路径,再执行composer install。

vendor目录为空,但命令没报错?先看当前路径对不对
最常见原因是你在项目子目录里执行了 composer install,比如在 src/ 或 public/ 下敲的命令。vendor 就会生成在那个子目录里,而不是你预期的项目根目录(即含 composer.json 的那层)。结果就是:你回到根目录找 vendor/,它当然空。
- 终端里直接运行
pwd(macOS/Linux)或cd(Windows),确认当前路径是否和composer.json在同一级 - 如果不在,
cd ..回到上一级再试;或者用绝对路径执行:php /path/to/composer.phar install - 别依赖 IDE 内置终端的“当前目录”显示——它有时缓存错误,以终端真实输出为准
vendor目录存在但里面只有composer/子目录?检查锁文件和缓存
这种“半截 vendor”往往不是安装失败,而是状态被中断或污染了。Composer 看到 vendor/ 目录存在,就跳过完整解压,只做增量处理,结果只写了自身框架文件。
- 删掉
vendor/和composer.lock(前提是composer.json有备份) - 运行
composer clear-cache清掉 ~/.composer/cache 里可能损坏的 zip 包 - 加详细日志重装:
composer install --no-cache -vvv,观察输出里有没有Extracting ...行,以及最终解压路径是否为你当前目录 - 装完立刻验证:
ls -l vendor/autoload.php必须存在,且vendor/bin/下应有你 require 的可执行文件(如phpunit)
中文 Windows 下 vendor 为空?重点查三类隐性残留
资源管理器删 vendor 经常删不干净:句柄占用、权限拒绝、CRLF 换行污染,都会让 Composer 误判“已存在”,跳过安装。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 别用图形界面删,关掉所有 IDE 和终端后,在 PowerShell(管理员)中执行:
takeown /f vendor /r /d y→icacls vendor /grant %USERDOMAIN%\%USERNAME%:F /t /q→rm -r vendor - 检查
composer.lock是否被 Git 拉取时换行符污染:运行git status composer.lock,若提示 modified,用git checkout HEAD -- composer.lock回滚 - 确认镜像源配置有效:运行
composer config repo.packagist.org.url,如果是已停用的https://packagist.phpcomposer.com,需手动切回官方源或国内可信镜像
vendor目录存在但 autoload 失效?可能是权限或 classmap 错位
目录和文件都在,require 'vendor/autoload.php' 却报错,问题常出在读权限或 classmap 硬编码路径上。
- Linux/macOS 下运行
ls -ld vendor,如果属主是root,说明之前用了sudo composer install—— 此时不能只改权限,要删掉重装,否则 autoload 映射仍指向 root 用户路径 - 如果启用了
"classmap-authoritative": true,vendor/被删后不能靠dump-autoload恢复,必须重新composer install,因为 classmap 是生成时写死的绝对路径 - Docker 或 WSL 环境下,挂载宿主机目录时
vendor/可能因 UID 不匹配变成不可读,此时ls -l vendor会显示问号或乱码,需统一用户 ID 或改用容器内安装
真正卡住人的,往往不是命令输错了,而是你以为 vendor 应该在 A 地方,它其实在 B 地方;你以为删干净了,其实还剩个空目录或残留句柄;你以为 lock 文件没问题,其实换行符已经悄悄改了它的哈希。盯住 pwd、ls -l、git status 这三个命令的输出,比反复重装更省时间。










