90%的“Could not find package”错误源于name或路径不匹配:name须大小写、分隔符(仅短横线-)完全一致,路径须指向含composer.json的目录且相对于主项目composer.json,末尾不可加/。

为什么require本地包总提示“Could not find package”
90% 的失败不是网络或权限问题,而是 name 或路径不匹配。Composer 不做模糊匹配——大小写、分隔符(只认短横线 -)、vendor 名必须和 require 中写的**逐字一致**。
常见错误现象:Could not find package vendor/name,但运行 composer show --all 根本看不到该包名。
- 检查本地包根目录下是否存在合法
composer.json(无尾逗号、全双引号、JSON 语法有效) - 确认本地包
composer.json中的name字段值与主项目require里写的完全相同,例如"acme/utils"≠"Acme/utils"≠"acme_utils" - 路径必须指向**含
composer.json的目录**,且是相对于主项目composer.json的位置,如"../my-pkg";不能是 shell 当前工作目录下的相对路径,末尾也不能加/ - Windows 用户避免路径含中文或空格,某些 PHP 版本解析会静默失败
为什么改了本地代码,vendor 里还是旧版本
这是最隐蔽的陷阱:path 仓库默认尝试创建符号链接(symlink),但失败时会**静默 fallback 到复制(copy)**,结果你改源码,vendor/ 里毫无反应。
关键不在主项目配置 "symlink": true,而在于**本地包自己的 composer.json 是否声明了 "options": {"symlink": true}**。缺这句,Windows 上即使管理员权限运行终端也会 fallback;Docker 容器挂载宿主机目录时也常因权限丢失 symlink 能力。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 验证是否真用了 symlink:
ls -la vendor/vendor/name(Linux/macOS)或dir vendor\vendor\name(Windows),看到箭头或JUNCTION才算成功 - 若显示为普通文件夹,说明 fallback 成 copy,立刻检查本地包
composer.json是否漏了options段 - Windows 下必须以管理员身份运行终端,否则 symlink 创建失败且无提示
- Docker 场景需在
docker run时加--cap-add=SYS_ADMIN并确保挂载方式支持 symlink
autoload 映射没更新,类找不到怎么办
path 仓库让包“存在”,但类能否被 new 或 use,取决于 autoload 映射是否包含它的真实路径。即使本地包 composer.json 写了 "psr-4": {"Acme": "src/"},主项目也不会自动加载——Composer 不会跨仓库继承 autoload 配置。
- 必须手动执行
composer dump-autoload -o强制刷新映射 - 检查主项目
composer.json的autoload或autoload-dev是否已包含该命名空间,或是否漏加"classmap": ["vendor/vendor/name/src"]等显式路径 - Xdebug 断点失效?确保 IDE 里设置的路径与真实磁盘路径完全一致(尤其 Docker/WSL 场景下,
/var/www和C:\project映射错位会导致断点不触发)
composer diagnose 报 “failed to parse” repository 是什么问题
运行 composer diagnose 时提示某条 repository “failed to parse”,说明 repositories 配置本身不合法,根本没走到请求阶段。
- type 为
path时,url必须是相对路径字符串(如"../my-pkg"),不能是 URL 协议(如"file:///..."或"https://...") - type 为
path时,不能混用packages字段;那是packagetype 的用法 - 确保
repositories数组中没有语法错误(如多逗号、单引号、未闭合括号) - 如果用了环境变量占位(如
"${MY_PKG_PATH}"),确认该变量已在 shell 中导出,且 Composer 支持该版本的变量展开(≥2.2.0)
真正难排查的点往往藏在本地包的 composer.json 里——它既控制 symlink 行为,又决定 autoload 是否生效,还影响 name 匹配逻辑。这三个地方只要一个出错,就会导致“看起来装上了,实际用不了”。

















