composer install卡在“api rate limit exceeded”是因为github和packagist对未认证请求硬性限流(github 60次/小时、packagist约10–20次/分钟),需分别配置github token(composer config --global github-oauth.github.com ,权限600)和packagist api token(composer config --global http-basic.packagist.org _ $token)才能彻底解决。

为什么 composer install 会卡在 API rate limit exceeded
这不是网络不通,也不是镜像源配错了,而是 GitHub 或 Packagist 对未认证请求做了硬性限流。Composer 在解析 dev-master、dev-* 分支、私有仓库 tag 列表,或依赖里含 fork 后没改 "source" 的包时,会密集调用 https://api.github.com/ 或 https://packagist.org/ —— 这些请求默认不带认证头,GitHub 按 IP 限 60 次/小时,Packagist 匿名配额更严(约 10–20 次/分钟)。公司/学校共享出口 IP?那额度是大家共用的,一上午就耗尽。
配 GitHub Token 是最直接有效的绕过方式
生成一个 GitHub Personal Access Token 并让 Composer 携带它发请求,就能把限额从 60 升到 5000 次/小时。关键不是“有没有配”,而是“配得对不对”:
- 去
https://github.com/settings/tokens/new新建 token,只勾选public_repo(公开项目够用)或repo+read:packages(含私有库) - 执行
composer config --global github-oauth.github.com <your_token></your_token>—— 域名必须是github.com,不是api.github.com,否则静默失效 -
chmod 600 ~/.composer/auth.json:权限不是 600,Composer 会直接忽略该文件 - 验证是否生效:
composer diagnose输出里看到GitHub API: OK才算真正通了
Packagist 的 429 错误要单独配 Packagist Token
别被错误提示误导:“enter your GitHub credentials” 实际要的是 Packagist 自己的 Token。GitHub Token 对 Packagist API 无效:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 登录
https://packagist.org/profile/→ “API Token” 栏 → “Create New Token” - Token 只显示一次,务必复制保存;无需勾选任何权限(它是只读的)
- 它必须写进
auth.json,不能靠环境变量或命令行传入:composer config --global http-basic.packagist.org _ $TOKEN - 注意:这个配置和 GitHub Token 是两套独立机制,都要配才完整
代理配置不能替代认证,但能缓解链路问题
代理解决的是“连不上”,不是“被限流”。但若你所在网络本身访问 GitHub/Packagist 不稳定,代理配错会让问题叠加:
- Composer 完全忽略
http_proxy等系统环境变量,只认http-proxy和https-proxy配置项(注意是连字符,不是下划线) -
https-proxy的值必须以http://开头,哪怕你用的是 HTTPS 代理服务 - 用户名/密码含
@或/必须 URL 编码,例如user%40domain:pass%40word@127.0.0.1:7890 - 配完立刻验证:
curl -x http://127.0.0.1:7890 https://packagist.org/packages.json能通,Composer 才可能通
真正卡在 IP 频率限制时,核心矛盾永远是“未认证请求”。Token 配对、权限、域名、文件权限这四点,漏一个都会退回到每小时 60 次的状态——哪怕你开了代理、用了镜像、清了缓存,也照样报错。










