composer怎么配置auth.json_composer身份验证文件配置方法

1次阅读

auth.json 应放 composer home 目录(如 ~/.composer/auth.json)全局生效,或项目根目录且需在该目录执行 composer 命令;私有仓库用 http-basic(纯域名)、github 用 github-oauth(仅 github.com);修改后须清缓存。

composer怎么配置auth.json_composer身份验证文件配置方法

auth.json 文件该放哪儿才生效

Composer 只会在特定位置查找 auth.json,放错地方就完全不读——不是所有项目根目录都管用。

  • 全局生效(推荐):放在 Composer 的 home 目录下,路径通常是 ~/.composer/auth.jsonlinux/macos)或 %APPDATA%Composerauth.jsonwindows
  • 项目级生效:放在项目根目录,但必须确保该目录是 composer installcomposer update 执行时的当前工作目录
  • 注意:COMPOSER_HOME 环境变量会覆盖默认 home 路径,执行 composer config --global home 可确认实际位置

私有仓库认证怎么写才不报 401

最常见的错误是把 Token 或密码直接塞进 URL,或者混淆了 http-basicgithub-oauth 的写法。

  • gitlab / 自建 Satis / 私有 Packagist:用 http-basic,域名必须精确匹配(带端口、协议头都不行)
    {     "http-basic": {         "gitlab.example.com": {             "username": "token",             "password": "glpat-xxxxxx"         }     } }
  • GitHub:必须用 github-oauth,且 key 是 github.com(不能写成 api.github.com 或带 www)
    {     "github-oauth": {         "github.com": "ghp_xxxxxx..."     } }
  • 别手贱加 https:// 前缀到域名里——auth.json 里的 host 字段只认纯域名

为什么改了 auth.json 还拉不到包

不是配置没生效,就是缓存/权限/网络链路卡在中间某一层。

  • Composer 会缓存 repo 元数据,改完 auth.json 后必须清缓存:composer clear-cache
  • 如果用了 composer config --global repo.packagist composer https://packagist.org 类似命令,可能覆盖了默认行为,检查 composer config --global --list
  • 某些公司代理会拦截 OAuth header,可临时加 -v 查看真实请求头是否带 Authorization: BearerBasic
  • 私有 Git 仓库(如 ssh)不需要 auth.json,走的是系统 ssh-agent 或 ~/.ssh/config,别混在一起配

多账号或多平台怎么安全共存

一个 auth.json 文件能同时存多个凭证,但要注意 scope 隔离和最小权限原则。

  • 不同域名分开写,互不影响:"gitlab.internal.com""gitlab.example.com" 视为两个独立入口
  • 避免把生产 token 放进团队共享的项目级 auth.json,容易误提交;全局配置更可控
  • GitHub token 建议用 read:packages + delete:packages(按需),别给 admin:org——真出事没法回溯是哪个命令触发的
  • 敏感值不要硬编码在 CI 脚本里,CI 环境应通过 secret 注入,再由脚本生成临时 auth.json

配置本身不难,难的是每个环节都得对上:路径对、域名对、token 类型对、缓存清干净、网络没劫持。漏掉任意一环,就会卡在「明明填了却 401」。

text=ZqhQzanResources