Composer仅在两个固定路径稳定读取auth.json:Linux/macOS为~/.composer/auth.json,Windows为%APPDATA%\Composer\auth.json,且权限须设为600(Linux/macOS)或非只读(Windows),域名key必须与仓库URL host逐字符完全一致。

auth.json 文件必须放在哪几个固定路径
Composer 只在三个位置自动读取 auth.json:当前项目根目录(与 composer.json 同级)、COMPOSER_HOME 目录、系统级配置目录。但项目根目录下的 auth.json 默认不生效——除非你显式加 --auth 参数运行命令。实际能稳定起作用的,只有两个路径:
- Linux/macOS:
~/.composer/auth.json(不是~/.config/composer/auth.json,新版 Composer 也不认这个) - Windows:
%APPDATA%\Composer\auth.json(即C:\Users\用户名\AppData\Roaming\Composer\auth.json)
把 auth.json 放进 vendor/、.gitignore 里、或命名为 auth.json.dist,Composer 完全不会看它。
权限不对就等于没配
文件权限错误比内容写错更常见。Linux/macOS 下必须执行:
chmod 600 ~/.composer/auth.json
否则 Composer 会静默跳过该文件,不报错、不提示、不下载私有包——你只会看到 Could not find package 或卡在 Loading composer repositories。Windows 没有 chmod,但要注意文件不能被设为只读,且所在目录需对当前用户可写。
验证方式很简单:运行 ls -l ~/.composer/auth.json,输出行开头应为 -rw-------。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
域名 key 必须和仓库 URL host 完全一致
auth.json 里的 key 不是随便写的,它必须和 repositories.url 中的 host 部分逐字符匹配,包括端口。例如:
- 仓库 URL 是
https://gitlab.example.com:8443/acme/utils.git→ key 必须是"gitlab.example.com:8443" - URL 是
https://bitbucket.org/acme/utils.git→ key 必须是"bitbucket.org",不能是"https://bitbucket.org"或"www.bitbucket.org"
大小写也敏感。写成 "Gitlab.example.com" 或漏掉端口,Composer 就当没这回事,静默 fallback 到无认证状态。
HTTPS 私有仓库还要额外配 ssl.cafile
如果私有 Git 服务用了自签名证书或内部 CA,仅靠 auth.json 不够。你得在全局配置里指定证书路径:
composer config --global ssl.cafile /path/to/your/ca-bundle.crt
注意:/path/to/your/ca-bundle.crt 必须是绝对路径,不能用 ~ 或 $HOME;文件格式要是 PEM,不能是 PFX 或 JKS;路径中不能含中文或空格。否则 Composer 会在 SSL 握手阶段直接失败,报错类似 cURL error 60: SSL certificate problem,但不会提示你去查 ssl.cafile 配置。
最常被忽略的是:auth.json 的域名 key 和仓库 URL host 不一致这件事,它不报错,只沉默失效。调试时别只盯着密码对不对,先用 composer config repositories 看 URL 解析是否正确,再确认 auth.json 路径和权限是否真被加载。

















