composer install 报 403 是因未认证 github api 请求超限(每小时60次),配 github token 可升至5000次;需生成 token 并通过 composer config --global github-oauth.github.com 配置,注意 auth.json 权限为600。

为什么 composer install 突然报 403 rate limit exceeded
因为 Composer 默认用未认证的 GitHub API 请求获取包元数据(比如 composer.json 中的 dev-master 分支、dev- 前缀版本、或私有仓库的 tag 列表),而 GitHub 对未登录请求限流极严——每小时最多 60 次。一旦触发,Composer 就卡在“Resolving packages”阶段,最终抛出 403 rate limit exceeded 或 Could not fetch https://api.github.com/...: 403 Forbidden。
这不是 Composer 的 bug,是 GitHub 的安全策略;也不代表你本地网络或配置错了,而是请求被上游拒绝了。
- 典型触发场景:
composer create-project、composer update时拉取大量 dev 分支、依赖里含 fork 后未改source的包、CI 环境反复重试安装 - 注意:只有涉及 GitHub API 的操作会中招,如从 packagist.org 下载 zip 包(
dist)通常不受影响 - 限流不看 IP,看请求头里的
User-Agent和是否带Authorization,没 token 就算换机器也一样被限
怎么配 GitHub Token 让 Composer 走认证通道
GitHub Token 把你的请求身份从“匿名游客”升级为“已登录用户”,配一次,每小时限额升到 5000 次,基本够用。
操作分两步:生成 token + 告诉 Composer 使用它:
- 去 https://www.php.cn/link/f4380fd29ac34f2610014e8361d088fb 新建 Personal Access Token,勾选
repo(仅需读权限,public_repo对公开项目已足够) - 执行
composer config --global github-oauth.github.com <your_token_here></your_token_here>,token 会被存进全局auth.json(默认在~/.composer/auth.json) - 验证是否生效:运行
composer config --global --list | grep github-oauth,能看到已配置的域名和掩码后的 token
注意:auth.json 文件权限必须是 600(chmod 600 ~/.composer/auth.json),否则 Composer 会忽略它并静默退回到未认证模式。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
CI 环境下 Token 怎么安全注入又不暴露
CI(如 GitHub Actions、GitLab CI)里不能硬编码 token,也不能让 auth.json 进仓库。得靠环境变量 + Composer 的动态解析能力。
- GitHub Actions 示例:在
.github/workflows/composer.yml中加env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }},然后运行composer config github-oauth.github.com $GITHUB_TOKEN(不加--global,只作用于当前项目) - GitLab CI 示例:在 CI 变量里设
GH_TOKEN,然后composer config github-oauth.github.com "$GH_TOKEN" - 关键点:不要用
echo '{"github-oauth": {"github.com": "..."} }' > auth.json—— 这种写法容易因 shell 转义或权限问题导致 token 写错或文件可读,且auth.json若被 commit 就等于泄露 token
另外,GITHUB_TOKEN(Actions 自带)默认权限有限,无法访问私有 fork,此时必须用自建的 Personal Access Token 并手动存为 secret。
还有哪些情况会绕过 Token 或让限流复现
Token 不是银弹。以下情况仍可能触发限流或让认证失效:
-
composer install时用了--no-scripts或--no-plugins?不影响,认证走的是 HTTP 请求层,跟脚本无关 - 项目里
composer.json的repositories写了"type": "vcs"且 URL 是https://github.com/xxx/yyy?会走 API,必须有 Token;但如果强制指定"dist"(zip 包地址),就绕过 API - 用了镜像源(如阿里云、腾讯云 Composer 镜像)?部分镜像不转发 GitHub API 请求,但元数据同步仍依赖上游 GitHub,Token 对镜像本身无效,得看镜像是否缓存了 tag 列表
- PHP 版本太低(如 7.2 以下)或 cURL 缺少 SSL 支持?可能导致 Authorization 头根本发不出,请求降级为未认证,现象就是 token 配了也白配
最隐蔽的坑:某些老旧的 Composer 插件(比如自定义 installer)会自己调 GitHub API,完全不走 Composer 的认证机制——这种就得单独排查插件源码或临时禁用。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










