composer怎么配置GitHub令牌_composer设置github-oauth方法

1次阅读

需配置github个人访问令牌(pat)到全局auth.json:运行composer config -g github-oauth.github.com ,确保令牌勾选repo和read:packages权限,并设auth.json权限为600。

composer怎么配置GitHub令牌_composer设置github-oauth方法

composer install 报错 “API rate limit exceeded” 怎么办

这是没配 GitHub 令牌的典型表现,Composer 在拉取私有库或高频访问 GitHub 公共库时,会触发未认证请求的限流(60 次/小时)。配了 github-oauth 后,走的是认证 API,上限升到 5000 次/小时。

  • 令牌必须是个人访问令牌(PAT),不是 ssh key 或 OAuth App Token
  • 创建时至少勾选 repo(读私有库)和 read:packages(读 GitHub Packages),如果只装公开包,public_repo 也够用
  • 别把令牌硬编码进 composer.json —— 它会被提交到 Git,属于严重安全风险
  • 令牌应存在本地配置里,对所有项目生效:
    composer config -g github-oauth.github.com <your_token_here>

为什么 composer config github-oauth 不加 -g 无效

不加 -g 是给当前项目写入 composer.jsonconfig.github-oauth 字段,但 Composer 从 2.2 开始默认忽略该字段 —— 它只认全局配置或环境变量 GITHUB_TOKEN

  • -g 写入的是 ~/.composer/auth.json,这才是 Composer 实际读取的位置
  • 如果项目用了 COMPOSER_AUTH 环境变量,它优先级更高,会覆盖 auth.json
  • 检查是否生效:运行 composer config -g --list | grep github-oauth,有输出才算成功

GitHub 令牌失效后 composer 仍卡在旧错误

不是缓存问题,是 Composer 尝试重试时用了旧凭据,而 GitHub 返回 401 后它不会自动清掉失败凭据。你得手动清理并重试。

  • 删掉 ~/.composer/auth.json 里对应 github.com 的条目,或整文件删掉再重配
  • 删掉 vendor/composer.lock(尤其锁文件里可能存了已鉴权的 dist URL)
  • 执行 composer clear-cache,避免旧元数据干扰
  • 再跑 composer install,它会重新发起带新令牌的请求

CI 环境下怎么安全传入 GitHub 令牌

不能写死在脚本里,也不能塞进 auth.json 提交到仓库。正确做法是靠环境变量注入,且确保 CI 日志不回显。

  • GitHub Actions:用 secrets.GITHUB_TOKEN(自带)或自定义 secret,配合 composer config github-oauth.github.com ${{ secrets.MY_TOKEN }}
  • gitlab CI:设变量为 GITHUB_TOKEN,Composer 会自动识别并用于认证
  • 自建 jenkins:通过 Credentials Binding 插件注入环境变量,禁止勾选 “Mask passwords in logs” 以外的选项
  • 验证是否生效:CI 中加一步 composer config --global --list | grep github-oauth,确认输出非空

实际最常被忽略的是:GitHub 个人访问令牌创建后,默认作用域为空,必须手动勾选权限;另外 auth.json 文件权限要是 600,否则 Composer 会拒绝读取。

text=ZqhQzanResources