Composer提示“API rate limit exceeded”是因为GitHub对未认证API请求限流(60次/小时),需配置Personal Access Token(含repo权限)提升至5000次/小时;全局配置composer config -g github-oauth.github.com 即可,注意避免空格、过期或SSO未授权。

为什么 Composer 会提示“API rate limit exceeded”
当你在 GitHub 上频繁执行 composer install 或 composer update,尤其是拉取私有仓库或高热度公共包时,GitHub 的未认证 API 请求限制(60次/小时)很快就会被耗尽。这时 Composer 会报错:Failed to download vendor/package: Could not fetch https://api.github.com/...: {"message":"API rate limit exceeded"}。这不是 Composer 的问题,而是 GitHub 对匿名请求的限制——必须提供身份凭证才能提升到 5000次/小时。
如何生成并配置 GitHub Personal Access Token
Token 必须具备 repo 权限(读取私有/公共仓库),如果只用在公开包上,public_repo 也够用;但建议直接勾选 repo,避免后续因权限不足失败。
- 访问 https://www.php.cn/link/9c450eb90c31bc12f1691f235da5a0cc,填写 Note(如 “composer-cli”),勾选
repo - 生成后立即复制 Token 字符串(页面关闭后无法再次查看)
- 运行命令写入全局配置:
composer config -g github-oauth.github.com <your_token_here></your_token_here> - 验证是否生效:
composer config -g github-oauth.github.com应输出你的 Token
遇到“401 Unauthorized”错误怎么办
常见于 Token 过期、权限不足、或被误删空格粘贴。Composer 不会主动校验 Token 有效性,直到发起 API 请求才暴露问题。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 检查 Token 是否已过期(GitHub 后台可查看有效期,2022 年起新 Token 默认设为“no expiration”,但旧 Token 可能已失效)
- 确认没有复制到前后空格或换行符——用
echo "<token>" | hexdump -C</token>查看是否有0a(换行)或20(空格) - 若使用 GitHub SSO(企业账户),需额外启用 “Enable SSO” 并将 Token 关联到组织,否则仍会 401
- 临时调试可用
GITHUB_TOKEN=xxx composer update绕过配置,快速验证 Token 是否有效
是否需要为每个项目单独配置 Token
不需要。全局配置(-g)已覆盖所有项目。但要注意:如果某项目 composer.json 中定义了 repositories 指向私有 GitHub 仓库,且该仓库属于不同 GitHub 账户(比如公司账号),则需确保 Token 对应账户有对应仓库的读取权限——Token 权限是绑定到生成它的账户的,不是“万能钥匙”。
另外,CI 环境(如 GitHub Actions)中不建议写死 Token 到 composer.json 或配置文件,应通过环境变量注入:composer config github-oauth.github.com "${{ secrets.GITHUB_TOKEN }}",并在 job 中设置 secrets.GITHUB_TOKEN。










