auth.json必须放在项目根目录或~/.composer/auth.json,权限设为600(Linux/macOS)或无BOM(Windows),域名须与请求Host完全一致,且仅支持http-basic和github-oauth字段,手动编辑易出错,推荐用composer config命令生成。

auth.json位置和权限必须严格匹配
Composer只在两个地方找auth.json:当前项目根目录(优先)、~/.composer/auth.json。它不会读vendor/、config/或子目录下的同名文件,也不会递归查找。
Linux/macOS下必须运行chmod 600 auth.json,否则Composer会静默忽略该文件;Windows上需确保文件无BOM、不带UTF-8签名。
- 项目级推荐:把
auth.json放在和composer.json同级的目录下 - 全局配置慎用:
composer config --global http-basic.packages.example.com user token会让所有项目共享凭据,CI中易泄露 -
auth.json必须加进.gitignore,绝不可提交到Git
域名必须与请求Host完全一致
Composer匹配认证时只看HTTP请求头里的Host字段,不解析协议、路径、端口,也不支持通配符。
比如仓库URL是https://packages.internal.org/api/v1,就得配packages.internal.org;填internal.org、https://packages.internal.org或packages.internal.org:443全都不生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- GitLab私有实例
https://gitlab.company.com→ 配gitlab.company.com - Nexus地址
https://nexus.myorg.com/repository/composer/→ 配nexus.myorg.com - 密码含
$、!、@等shell特殊字符时,命令行执行要用单引号包裹:composer config http-basic.packages.example.com user 'p@ss$w!rd'
别在composer.json里硬编码凭证
往composer.json的repositories数组里加username/password字段完全无效——Composer根本不读这些字段。更危险的是,这等于把凭证明文塞进代码库。
也别改composer.json里的config.http-basic,那只是静态声明,不会触发认证头发送,composer install时照样401。
- 真正起作用的是
auth.json或composer config http-basic.{domain}命令生成的内容 - Git仓库必须用
https://协议才能触发HTTP Basic Auth;git@地址走SSH,跟auth.json无关 - 验证是否生效:运行
composer config --list | grep http-basic,看到对应域名才说明加载成功
401或404报错时先确认认证头是否发出
报401 Unauthorized不是密码错了,而是根本没发Authorization: Basic头;报404常是伪装——服务器返回HTML登录页,Composer试图解析JSON失败,日志里会出现Failed to decode response: Syntax error。
- 用
composer diagnose检查输出里有没有Checking http-basic authentication及列出的域名 - 临时验证连通性:
curl -v -u user:pass https://packages.example.com/packages.json - 多个私有源要分别配,
{"http-basic": {"a.com": {}, "b.net": {}}}这样写才共存,重复执行composer config会覆盖同一域名的旧值
auth.json格式零容忍——多一个逗号、用单引号代替双引号、带注释、JSON缩进不规范,它都会静默跳过,且不报错。

















