必须配置github-domains白名单,因composer 2.2+默认仅信任api.github.com,未列入的github enterprise域名(如git.example.com)会被静默跳过认证流程,导致could not fetch错误;需以字符串数组形式配置纯域名,配合auth.json token、vcs仓库声明及缓存清理方可生效。

GitHub Enterprise 私有仓库拉不下来,不是 token 没配,而是 github-domains 根本没加——Composer 默认只信 api.github.com,其他域名全被静默跳过。
为什么 github-domains 是必须配的硬门槛
Composer 2.2+ 引入 github-domains,本质是个白名单:它只对列表里的域名走 GitHub API 认证流程。没进白名单的域名(比如 git.example.com),哪怕你 auth.json 里写了 token、repositories 也指向了该地址,Composer 依然不会把 token 带过去,直接报 Could not fetch 或卡在 Reading composer.json。
常见错觉是“我 token 都配好了,怎么还 401”,其实根本没走到认证那步。
-
github-domains必须是字符串数组,每个元素是纯域名(如"git.example.com"),不能带https://、端口、路径 - 子路径不影响匹配(
https://git.example.com/github→ 只填"git.example.com") - 配置位置:全局(
~/.composer/config.json)或项目级(composer.json的config段)都行,但项目级会覆盖全局
composer config 命令怎么写才不翻车
别手写 JSON,用命令行写入最稳。注意域名必须和实际 API 请求 Host 完全一致,大小写敏感,不含协议:
GInstall OneClick — 一键安装 GitHub 项目:规划、克隆、安装 Node 依赖、运行开发脚本。适用于想要获取 GitHubNode.js 项目的用户。
- 全局配置:
composer config -g github-domains '["git.example.com", "ghes.internal"]' - 项目级配置(进项目目录后):
composer config github-domains '["git.example.com"]' - 验证是否生效:
composer config -g --list | grep github-domains,应看到对应数组 - 如果已有错误配置,先删再重写:
composer config -g --unset github-domains
Windows 用户注意:PowerShell 中单引号内不能插变量,建议用 CMD 或直接粘贴完整字符串。
配完 github-domains 还要同步做三件事
光加域名只是开了门,后面几步漏一个,照样进不去:
-
auth.json里得有对应域名的 token:{"github-oauth": {"git.example.com": "ghp_abc123"}}(token 必须是 GHE 实例上生成的,且勾选repo) -
composer.json的repositories必须显式声明类型为vcs,URL 用完整 HTTPS 地址:{"type": "vcs", "url": "https://git.example.com/owner/repo.git"} - 如果企业版启用了 SSO,token 必须点 “Enable SSO” 授权,否则仍 403 —— 这一步最容易被跳过
最后清缓存:composer clear-cache,再跑 composer install。GHE 的 API 路径可能不是 /api/v3,但只要域名进了 github-domains 白名单,Composer 就会自动适配。










