私有包“不存在”本质是Composer未路由至私有源:需确保repositories数组首项为私有源且末尾独立配置{"packagist.org": false},vcs类型URL须以.git结尾、name严格一致,composer search无法验证私有包。

私有包“不存在”根本不是网络问题,是 Composer 根本没去你配的源里查
报 Could not find package vendor/name 时,90% 的情况是 Composer 压根没访问你的私有仓库——它默认仍走 https://repo.packagist.org,哪怕 composer.json 里写了私有 URL。这不是连接失败,是路由未生效。
验证方法:运行 composer config repositories,输出中必须同时满足两个条件:
- 第一个元素是你的私有源(
"type": "composer"或"type": "vcs") - 末尾有一个独立对象:
{"packagist.org": false}(注意:不是"packagist": false,也不是嵌套在其他对象里) - 如果输出里还出现
https://repo.packagist.org,说明开关没起作用,配置白写了
repositories 数组顺序写错,私有源永远被跳过
Composer 查源是「线性短路」:从 repositories 数组第一个元素开始,对每个源发请求;只要某个源返回 HTTP 200 + 可解析 JSON(哪怕不含你要的包),就立刻锁定它,后续全跳过。
常见错误配置:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 把私有源写在第二位,第一位是阿里云镜像或空的
{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}→ 私有包永远进不了 - 用
composer config repo.my-private composer https://private.example.com追加 → 它被插到数组末尾,完全无效 - 误以为
"type": "package"能自动索引 → 它只响应显式声明的 name+version,不参与全局匹配
正确做法:手动编辑 composer.json,确保私有项是 repositories 的第一个元素,且 type 明确为 vcs(Git 地址)或 composer(Satis/Artifactory)。
vcs 类型仓库 404?不是网络不通,是元数据读取失败
vcs 类型(如 GitLab、GitHub 私有地址)不参与全局搜索,只在你执行 composer require vendor/name 且该 name 与目标仓库 composer.json 中的 name 字段**逐字一致**时才触发拉取。报 404 的真实原因,往往卡在第一步元数据读取。
-
type必须写"vcs",写成"git"、"github"或漏掉,整条配置被忽略 - URL 必须是可
git clone的地址,结尾只能是.git,不能带分支或 tag 后缀(如https://gitlab.example.com/myorg/utils.git#main❌) - 目标仓库根目录必须有合法
composer.json,其中name值(如"myorg/utils")必须和require中写的**完全一致**,大小写、斜杠、不可见字符都不能错 - 若用 SSH 地址(
git@gitlab-company:group/repo.git),需先确认ssh -T git@gitlab-company成功返回 welcome 信息
URL 末尾缺斜杠、packagist.org 开关位置错,都是静默失效点
这两个细节看似微小,但任一出错都会导致整个私有源配置静默失效,且无明确报错提示。
- 所有
type: "composer"的 URL **必须以/结尾**,例如"https://packages.yourcorp.com/"✅,"https://packages.yourcorp.com"❌ → 请求packages.json会 404 -
{"packagist.org": false}必须是repositories数组里的一个**独立对象**,且必须放在私有源之后、数组末尾(不是开头,也不是根节点) - 写成
"packagist": false、"packagist.com": false、或塞进某个仓库对象里(如{"type":"composer","url":"...","packagist.org":false}),都会被忽略 - Artifactory/Satis 等服务端 URL 中的路径(如
/api/composer/)也不能替换成/api/npm/等非 composer 协议路径
最易被忽略的是:VCS 仓库不依赖 packagist.org 开关,但 composer search 永远只查官方源,所以别用它验证私有包是否存在——它搜得到,不代表你能 require 得到。

















