需配置 GitHub OAuth Token:运行 composer config -g github-oauth.github.com ,Token 应具备 read:packages 和 public_repo 权限,优先使用 fine-grained token 并限制访问范围,避免明文泄露。
Composer install 时提示 “API rate limit exceeded” 怎么办
这是 GitHub 对未认证请求的硬性限制:每小时最多 60 次 API 调用。Composer 在拉取
中的包元信息(尤其是私有库、GitHub 托管的包)时,会高频调用 GitHub API,没配 token 就直接撞墙。
解决方式不是换镜像或重试,而是让 Composer 带上合法身份——你自己的
Token。
Token 必须有
和
权限(私有库还需
)
生成地址:
,勾选对应 scope,别用 classic token(2023 年后已逐步弃用),优先选 fine-grained token
配置命令必须在全局执行:
验证是否生效:
应输出 token 前几位(Composer 会自动隐藏后段)
为什么 config -g 而不是项目级 config
因为 GitHub API 限频是按 IP + 请求头识别的,而 Composer 的包发现流程(如解析
元数据、递归获取依赖仓库信息)发生在安装前的全局解析阶段,此时项目目录下的
还没被加载,只有全局配置能覆盖整个流程链路。
项目级配置(
)只影响当前项目的
,但无法干预 Packagist 到 GitHub 的元数据抓取环节
放项目根目录下会被读取,但仅用于下载 zip 包或克隆仓库,不用于 API 元数据查询
如果你用 CI/CD(比如 GitHub Actions),得在 job 开头显式运行
,不能只靠
提交到 repo
Token 泄露风险与安全写法
直接把 token 写进
或命令行历史里,等于裸奔。尤其在共享环境或 CI 日志中,极易泄露。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
永远不要把含 token 的
提交进 Git —— 它默认就在
里,别手抖删掉
CI 中避免明文写 token:GitHub Actions 用
,GitLab CI 用
环境变量,再通过
注入
本地开发若怕 history 记录 token,可用
,它会交互式输入,不留在 shell 历史中
细粒度 token 建议限定资源范围(比如只允许访问某 org 下的 repo),比 classic token 更可控
还是报错?检查这几个隐性点
配完 token 还失败,大概率卡在非直觉位置。
确认 GitHub 用户名拼写正确:
是域名,不是用户名;token 是绑定你账号的,不是绑定组织的
公司网络可能拦截或缓存了 GitHub API 响应,换网络或加
看实际请求 URL 和返回头里的
某些旧版 Composer(composer self-update 最新版
如果用了私有 Packagist 镜像(如 Satis、Private Packagist),它们自身也要配好 GitHub token,否则只是把限频问题转移到了镜像服务端
Token 本身不会过期(fine-grained 可设有效期),但一旦泄露或怀疑异常,立刻去 GitHub 后台 revoke,然后换新 token。配一次不等于一劳永逸,关键是让它始终处于你的控制路径里。
composer.jsongithub-oauthread:packagespublic_reporead:private_repohttps://github.com/settings/tokens/newcomposer config -g github-oauth.github.com composer config -g github-oauth.github.compackagist.orgauth.jsoncomposer config github-oauth.github.com ...auth.jsonauth.jsoncomposer config -gauth.jsonauth.jsonauth.json.gitignore${{ secrets.GITHUB_TOKEN }}$GITHUB_OAUTH_TOKENcomposer config -g github-oauth.github.com "$GITHUB_OAUTH_TOKEN"composer config -g --auth github-oauth.github.comgithub.com-vvvX-RateLimit-Remaining