“package not found”主因是composer未在配置源中找到包,常见于包名拼写/大小写错误、私有包未配repositories、minimum-stability或php版本约束导致过滤,而非网络问题。

不能直接 composer require 就装上——这类库没注册到 Packagist,Composer 默认根本“看不见”它。真正要做的,是手动告诉 Composer:“这个包就在这儿,按这个规则加载”。
为什么 composer require vendor/name 会报 Could not find package
Composer 查包时,严格按 repositories 数组顺序匹配:先看第一个源有没有声明完全一致的 name(大小写、斜杠都不能差),没有就往下找;一旦走到默认开启的 packagist.org,就会静默 fallback,结果要么装错版本,要么直接报错。
- 最常见错误:加了私有源但没关默认源——必须在
repositories里显式写{"packagist.org": false} - type 写错(比如把
vcs写成git)或 URL 不可git clone,整个仓库会被忽略,不报错也不提示 - require 时写的版本号(如
dev-main)和目标仓库实际分支名不一致,就会卡在“找不到分支”
repositories 中该选 vcs 还是 path
取决于你当前所处阶段和部署环境:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 本地开发调试 fork 后的修改,或还没打 tag 的内部 SDK:用
"type": "vcs",URL 填 Git 地址(https://github.com/xxx/yyy.git),确保能git clone成功 - 纯本地联调、不想 push 到远程:用
"type": "path",URL 是相对路径(如"./packages/my-utils"),注意不能跨出项目根目录(../会被拒绝) -
"type": "composer"适合已有私有 Packagist 服务(如 Satis 或 Private Packagist),不适合临时引入孤立库
怎么写才能让 autoload 生效
即使成功 require 进来了,class not found 仍大概率发生——因为 Composer 不扫描文件,只认 composer.json 里写的 autoload 规则。
- 主包的
autoload必须包含 PSR-4 映射,且命名空间前缀与目录结构严格对应:"autoload": { "psr-4": { "Vendor\Package\": "src/" } } - 如果只是临时用,又不想改原库的
composer.json,可在你自己的项目中加autoload-dev并运行composer dump-autoload - 千万别把
tests/或vendor/塞进主autoload,否则生产环境会加载测试代码
最容易被忽略的一点:所有路径(repositories.url、autoload.ps4 的目录值)都必须是相对于你当前项目的根目录,不是相对于系统、不是相对于 shell 当前路径——哪怕你 cd 到子目录执行 composer require,它也只认 composer.json 所在位置为基准。










