必须显式禁用packagist.org且私有源置repositories首位,否则composer优先连接外网导致认证不触发;auth.json仅在~/.composer/auth.json(linux/macos)或%appdata%\composer\auth.json(windows)生效,权限须为600,域名key须与仓库url host完全一致。

必须显式禁用 packagist.org,且私有源必须放在 repositories 数组首位——否则 Composer 永远先连外网,你的认证凭据根本不会被触发。
为什么 auth.json 配了却没生效
Composer 只认两个固定路径的 auth.json,且权限、结构、域名三者缺一不可:
-
~/.composer/auth.json(Linux/macOS)或%APPDATA%\Composer\auth.json(Windows),不是项目根目录下那个 - 权限必须是
600:运行chmod 600 ~/.composer/auth.json,否则静默忽略 - key 必须和 URL host 完全一致:若仓库地址是
https://gitlab.internal/group/repo.git,key 就只能是"gitlab.internal",不能带端口、协议或路径 - GitLab 填
http-basic字段,password值为glpat-xxx;GitHub 用github-oauth;Bitbucket 必须用 App Password
repositories 中 type 和 URL 的硬性规则
type 写错、URL 少斜杠、数组格式不对,都会导致 Composer 直接跳过该条目,不报错也不提示:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 对接 Satis/Artifactory/Nexus 等 HTTP 服务时,
type必须是"composer",不是"vcs"或留空 - HTTP 地址末尾必须带
/:写成"https://repo.internal/",不能是"https://repo.internal",否则拼出packages.json路径会 404 - 数组必须是索引形式:
[{...}, {...}],不能写成对象键值对如{"internal": {...}},否则只读第一个 - HTTPS Git 仓库(如 GitLab)则
type必须是"vcs",且 URL 末尾必须带.git
项目级配置才是唯一可靠方式
全局配置(composer config -g)在 CI、宝塔、Docker 等场景下极易失效,因为执行用户不是你当前终端用户:
- CI 流水线(如 GitHub Actions)建议放弃
-g,改用composer config repo.packagist composer https://mirrors.aliyun.com/composer/,它会安全写入项目composer.json的repositories字段 - 项目级
composer.json中,"packagist.org": false必须和repositories同级,不能嵌套在config或其他字段里 - 改完立即删掉
vendor/和composer.lock,否则旧 lock 文件仍指向原始源,校验失败
最容易被忽略的是:哪怕你只 require 一个私有包,Composer 也会坚持先查 packagist.org —— 显式禁用不是可选项,是生效前提。任何环节漏掉这个开关,整个私有链路就断在第一步。










