应配置 github personal access token:访问 github.com/settings/tokens/new 勾选 repo 权限,复制 token 后执行 composer config -g github-oauth.github.com 。

Composer 安装 Yii2 时提示 “Could not fetch https://api.github.com/…” 怎么办
这是典型的 GitHub API 限流或 token 权限不足导致的卡顿,不是网络慢,也不是 Composer 本身出错。Yii2 的 composer create-project 会从 GitHub 拉取大量依赖(尤其是 yiisoft/yii2-app-basic 及其子包),而未配置 token 时,GitHub 每小时只允许 60 次未认证请求 —— 远不够用。
解决路径很直接:生成一个带 repo 权限的 Personal Access Token,并让 Composer 认得它。
- 访问
https://github.com/settings/tokens/new,勾选repo(不需要delete_repo或其他高危权限) - Token 生成后,立刻复制——页面关闭后无法再次查看明文
- 执行命令:
composer config -g github-oauth.github.com <your_token_here></your_token_here> - 确认生效:
composer config -g --list | grep github应该输出你的 token 哈希(非明文)
为什么用 github-oauth 而不是 auth.json 手动写
两者效果一致,但 composer config -g 是全局配置,避免每个项目重复设置;手动改 auth.json 容易因路径、权限或 JSON 格式错误失效(比如多了一个逗号、用了中文引号)。
常见翻车点:
-
auth.json放错位置:必须是COMPOSER_HOME目录下(通常是~/.composer/auth.json或%APPDATA%\Composer\auth.json) - token 写在了
http-basic区块里,而不是github-oauth下——这会导致完全不生效 - 用了过期 token(GitHub token 默认不过期,但可被手动 revoke;如果之前删过,就得重生成)
安装仍卡住?检查是否触发了 GitHub 的 2FA 强制校验
如果你的 GitHub 账号启用了双重验证(2FA),仅凭密码或旧 token 不再有效,必须使用 Personal Access Token 替代密码——这点常被忽略,尤其在 CI 环境或公司账号下。
验证方式:
- 运行
curl -H "Authorization: token <your_token>" https://api.github.com/user</your_token>,返回 200 且含用户名即有效 - 若返回
{"message":"Bad credentials","documentation_url":"https://docs.github.com/rest"},说明 token 错误或权限不足 - 别用 GitHub App Token 或 OAuth App Token——它们默认无
repo权限,Composer 不认
Yii2 安装完成但后续 composer update 还报错?注意 vendor 缓存污染
一旦 token 配置成功并完成首次安装,Composer 会缓存部分包元数据。但如果中途 token 失效又重试过,可能残留失败响应,导致后续操作仍卡在同一个点。
清理方法(不用删整个 vendor):
- 清空 Composer 的包缓存:
composer clear-cache - 删掉
composer.lock(如果只是试装,没改过依赖) - 重新运行
composer install或composer update - 留意终端输出里是否出现
Downloading (connecting...)后长时间不动——那是还在等 GitHub 响应,不是卡死,但超时后才报错
最麻烦的情况是公司网络走代理还拦截了 GitHub API 域名,这时 token 也救不了;得确认 https://api.github.com 能直连。











