配置 GitHub 令牌可将 Composer 的 API 限速从 60 次/小时提升至 5000 次/小时,需生成含 repo 权限的 Personal Access Token,并通过 composer config -g github-oauth.github.com 全局配置。

Composer 配置 GitHub 令牌后,能绕过未认证请求的 60 次/小时 API 速率限制,直接提升到 5000 次/小时(认证后)。不配令牌时,composer install 或 composer update 经常卡在 Downloading https://api.github.com/... 并报 403 rate limit exceeded 错误——这不是网络问题,是 GitHub 的硬性限制。
怎么生成 GitHub Personal Access Token
GitHub 已弃用密码认证,必须用 Personal Access Token(PAT):
- 登录 GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- 点击 Generate new token → Generate new token (classic)
- Token description 填
composer-auth这类易识别名 -
至少勾选
repo权限(读私有库、fork、提交等都需要;仅 public_repo 不够,会导致 clone 私有 repo 失败) - 生成后立即复制保存——页面关闭后无法再次查看明文
怎么让 Composer 使用这个令牌
推荐用 composer config 全局写入,避免每次手动填或暴露在 auth.json 明文里:
composer config -g github-oauth.github.com
执行后,Composer 会把令牌写入全局配置文件(通常是 ~/.composer/auth.json),内容类似:
{
"github-oauth": {
"github.com": "ghp_abc123..."
}
}
- 不用手动编辑
auth.json,config -g会自动处理格式和权限(如设为600) - 如果已存在
auth.json且格式损坏,composer config会覆盖重写,比手改更安全 - 公司项目若需多人共用同一令牌(不推荐),可用
composer config github-oauth.github.com(不加-g)写入项目级配置,但会进auth.json,记得加到.gitignore
验证是否生效 & 常见失败原因
运行 composer diagnose,看到 GitHub API: OK 表示令牌已正常工作。如果仍报 403,重点检查:
- 令牌权限是否漏选
repo(最常见);public_repo仅对公开仓库有效 - 是否误把
github.com写成api.github.com——github-oauth的 host 必须是github.com,不是 API 域名 - 令牌是否过期或被手动删除(GitHub 不会自动续期)
- 是否在 CI 环境(如 GitHub Actions)中没正确注入环境变量:CI 下建议用
composer config --global github-oauth.github.com "${{ secrets.GITHUB_TOKEN }}",而非依赖本地配置
真正容易被忽略的是:GitHub 的 token 权限粒度很细,repo 是总开关,但如果你用的是 GitHub Enterprise 或自建 GitLab,配置项和域名都要对应调整——Composer 不会自动识别平台差异,填错 host 就等于没配。










