配了Token仍被限流是因为请求未走认证通道,常见于代理未透传Authorization头、HTTPS代理缺失、域名错配(如重写github.com)或auth.json权限非600;验证需加-v看日志是否出现“Using GitHub token from configuration”。

为什么配了 Token 还被限流?
不是 Token 没生效,而是请求根本没走认证通道——常见于代理拦截、域名错配或 HTTPS 代理未配置。Composer 只对 github.com 域名注入 Authorization 头,若你配置了 http-proxy 却漏掉 https-proxy,或代理服务(如 Nginx/Squid)默认 strip 掉 Authorization 头,所有 GitHub API 请求都会降级为匿名调用,照样卡在 60 次/小时。
验证方式:加 -v 运行 composer install,搜日志里是否出现 Using GitHub token from configuration;没出现就说明认证链断了。
- 确保
https-proxyURL 以https://开头,且证书可信(自签名需额外设config.ssl.no-verify-peer true) - 代理必须显式透传
Authorization: Bearer xxx,Nginx 需确认proxy_pass_request_headers on且未在proxy_hide_header中屏蔽该头 - 别把
github.com重写成内网镜像地址——Host 不匹配,Composer 就跳过 token 注入逻辑
Token 权限和配置必须严格匹配
权限不足或配置路径错误,会导致认证静默失效。GitHub 已弃用密码登录,也限制 classic token 的 scope 范围,而 fine-grained token 对 Composer 支持尚不完全稳定(截至 2026 年 7 月),推荐仍用 classic token。
- 生成时至少勾选
public_repo;私有库必须加repo - 执行
composer config --global github-oauth.github.com <token>(注意是github.com,不是api.github.com) - 检查
~/.composer/auth.json(Linux/macOS)或%APPDATA%\Composer\auth.json(Windows)是否含"github-oauth": {"github.com": "xxx"} -
auth.json文件权限必须是600,否则 Composer 直接忽略它,并报Skipping github oauth config as auth.json is not readable
并发下载数必须压到 2
高并发(默认 5–10)会快速耗尽 Token 的 5000 次/小时额度——不是单次请求超限,而是短时密集请求触发镜像源 QPS 限流 + GitHub 自身连接池挤压,最终表现为卡在 Downloading 或 curl: (28) Operation timed out。
- 执行
composer config -g repos.packagist.org.concurrent-downloads 2(仅 Composer 2.2+ 有效) - 若用阿里云镜像,
packagist.org源不能删或注释,否则该配置不生效 - CI 环境中还要关掉自动更新检查:
COMPOSER_NO_INTERACTION=1 COMPOSER_DISABLE_UPDATES=1,避免每小时额外发起 3–5 个 GitHub API 请求
哪些场景 Token 也救不了?
Token 只解决 GitHub API 请求的认证问题,但无法绕过某些结构性限制。比如:
- VCS 类型仓库(
"type": "vcs")或直接引用"github.com/user/repo": "dev-main"的写法,始终要走 GitHub API,Token 是刚需 - 私有 fork 未在
repositories中显式声明"url"和"type": "vcs",Composer 仍会 fallback 到 GitHub API 查 tag,Token 有效但依赖解析变慢 - 纯 Packagist 托管的公开包(
"vendor/package")通常走 dist 下载,不触发 GitHub API——但若包 metadata 缓存失效,或用了--prefer-source,仍会查 API
真正难处理的是混合场景:既有大量 dev 分支依赖,又跑在共享出口 IP 的 CI 集群里。这时 Token + 降并发 + 多镜像 fallback("canonical": false)缺一不可,少一个环节都可能在凌晨三点突然失败。


















