私有包认证过期不是 composer 故障,而是本地凭据失效:github 需 classic pat 并配置 github-oauth;gitlab 需全域名匹配的 pat 且含 api 权限;私有 packagist 需主机名完全一致的 http-basic 凭据,不可混用网页密码。

私有包认证过期不是 Composer 故障,而是你本地存的凭据(GitHub token、GitLab CI token、私有仓库 basic auth)失效了——重新生成并写入对应配置即可恢复,不用动 Composer 本身或重装环境。
GitHub 私有仓库 token 过期:必须用 classic token,别碰 fine-grained
Composer 报 token has expired 或 401 Unauthorized 时,90% 是 GitHub 的 classic token 被 revoke、过期,或误用了 fine-grained token。
- fine-grained token 不支持
repo全权限,且默认带有效期(如 30 天),Composer 拉私有库会直接失败 - 必须去 GitHub Classic Token 页面 生成新 token,勾选
repo(必需)、read:packages(如果用了 GitHub Packages) - 生成后立即执行:
composer config -g github-oauth.github.com <your_new_token></your_new_token> - 验证:运行
composer config -g github-oauth.github.com,确认输出无前后空格;再跑composer diagnose看是否还有 token 相关警告
GitLab 私有源 token 失效:用 Personal Access Token + API endpoint
GitLab 私有包走 https://gitlab.example.com/api/v4 接口时,认证依赖 Personal Access Token(PAT),不是项目 deploy token 或 CI_JOB_TOKEN。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- PAT 必须至少有
read_api和read_repository权限 - 在
composer.json的repositories里指定完整 API 地址,例如:{"type": "composer", "url": "https://gitlab.example.com/api/v4/groups/my-group/-/composer"} - 然后执行:
composer config -g gitlab-token.gitlab.example.com <your_pat></your_pat>(注意域名要和 URL 一致,不含https://) - 若 GitLab 启用了 2FA,PAT 必须在用户 Settings → Access Tokens 页面生成,不能用项目级 token
私有 Packagist 镜像或自建仓库:basic auth 凭据过期怎么办
如果你对接的是私有 Packagist(如 Satis、Private Packagist、Toran Proxy),认证通常走 HTTP Basic Auth,凭据存在 auth.json 里,过期后需手动更新。
- 检查
~/.composer/auth.json(全局)或项目根目录下auth.json(局部),找对应域名的http-basic块 - 用新用户名密码替换
username和password字段,保存后运行composer clear-cache - 如果用的是 token 当 password(如 Private Packagist 的 API token),确保 token 未被 revoke,且权限仍覆盖所需组织/包范围
- 敏感凭据别硬编码进
composer.json——它会被提交到 Git,应只放auth.json并加到.gitignore
SSH 方式拉私有包失败?那跟 token 无关,查 SSH key
如果 composer.json 里依赖写的是 git@github.com:org/repo.git 这类 SSH 地址,Composer 根本不走 token 认证,而是调用系统 ssh 命令。
- 运行
ssh -T git@github.com(或对应 Git 服务器),看是否提示Hi xxx! You've successfully authenticated - 若失败,说明 SSH key 没添加到 GitHub/GitLab,或
~/.ssh/config里 Host 别名配错 - 别试图用
github-oauth去修 SSH 问题——那是两条完全不同的认证链 - CI 环境中记得把私钥注入为 secret,并用
ssh-add加载,否则composer install会卡在交互式密码提示
最常被忽略的是混用认证方式:比如 composer.json 写 HTTPS 地址却指望 SSH key 生效,或在 GitLab 中用了 project deploy token 却没意识到它只对单个项目有效。认证路径必须和仓库地址协议、服务端策略严格对齐。










