vendor目录为空通常是因为在错误目录执行composer install,而非Composer未运行;应先用pwd确认当前路径是否含composer.json,再检查磁盘空间、权限、防病毒软件干扰及中文路径或WSL符号链接问题。

vendor目录空着,大概率不是Composer没干活,而是它根本没在你认为的“项目根目录”里执行。
为什么composer install后vendor/是空的
最常见的情况:你在子目录(比如src/、public/或app/)里执行了命令,而composer.json其实在上层。Composer只认当前工作目录,不会自动往上找composer.json——它就在你pwd显示的那个路径下建vendor/,哪怕那里不该放。
- 先运行
pwd(Linux/macOS)或cd(Windows),确认当前路径是否含composer.json - 如果
composer.json在/home/user/myproject/,但你在/home/user/myproject/public/里敲了composer install,那vendor/就会出现在public/里,而不是项目根目录 -
vendor/为空 ≠ 命令失败;它可能真建了目录,但没解压任何包——因为没读到有效的composer.json或composer.lock
vendor/只有composer/子目录,其他包没出现
这说明Composer识别到了配置,但下载或解压环节卡住了。常见原因不是网络,而是权限或磁盘空间问题。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查磁盘剩余空间:
df -h .,尤其注意/tmp(Composer默认用它做临时解压区) - 确认当前用户对当前目录有写权限:
ls -ld .,若属主是root,普通用户无法写入 - 删掉残留的
composer.lock和vendor/,再加-vvv重试:rm -rf vendor composer.lock && composer install -vvv,看日志里卡在哪一步(比如Downloading ...后无响应,或Extracting ...时报错) - 某些防病毒软件会拦截
.zip解压,临时禁用试试
中文路径或WSL下vendor/bin变成普通文件
这不是vendor/没生成,而是符号链接被悄悄降级为复制文件——导致vendor/bin/phpunit等脚本不可执行,看起来像“没装成功”。
- 现象:
ls -l vendor/bin/显示的是普通文件,不是->指向 - 根本原因是PHP的
symlink()函数在中文路径或WSL的drvfs挂载点下静默失败,Composer自动fallback为copy() - 解决方法:确保
COMPOSER_HOME指向英文路径(如/home/user/composer),并在项目composer.json中显式加:"config": { "bin-compat": "full", "use-symlinks": true } - 若项目必须放在
/mnt/c/,补权限:chmod +x vendor/bin/* 2>/dev/null || true(每次install后都要跑)
CI/CD或Docker里vendor/始终空或权限错乱
容器内UID不一致、挂载卷覆盖权限、或缓存未清理,都会让vendor/看起来“没生成”。
- Docker中避免
bind mount整个项目进容器再跑composer install——改用COPY composer.json composer.lock后RUN composer install - GitHub Actions中若用了
cache: composer,记得在restore后执行chown -R $GITHUB_ACTOR:$GITHUB_ACTOR vendor/ - CI脚本里加一句校验:
test -f vendor/autoload.php || (echo "vendor missing" >&2; exit 1),比只看目录存在更可靠
真正难定位的不是“为什么没文件”,而是“为什么它觉得该有文件却没写进去”——盯住pwd、ls -l、-vvv日志这三样,比查文档快得多。

















