删旧token仍报invalid credentials,因composer读取缓存或错配auth.json:路径错误、json格式非法(如多逗号、空格)、项目级auth.json未在composer.json中显式启用;github需classic pat含read:packages,gitlab需api scope。

删了旧 token 还报 Invalid credentials 怎么办
不是 token 没换掉,而是 Composer 仍在读缓存或错配的 auth.json。常见三类硬伤:
-
auth.json路径不对:Linux/macOS 默认只认~/.composer/auth.json,Windows 是%APPDATA%\Composer\auth.json;项目根目录下的auth.json不会被自动加载 - JSON 格式非法:多逗号、单引号、末尾换行符、粘贴时带前后空格——哪怕只错一个字符,
composer install就静默 fallback 到无认证状态 - 项目级凭据被忽略:项目根目录有
auth.json,但composer.json里没写"config": {"auth-file": "auth.json"},它就当不存在
GitHub/GitLab token 权限填错导致 401 怎么验证
错误常出在 scope 上,而不是 token 本身失效。直接用 curl 测试最准:
- GitHub:运行
curl -H "Authorization: Bearer ghp_xxx" https://api.github.com/user/packages,返回200才算有效;token 必须是classic类型,且勾选read:packages(fine-grainedtoken 默认不支持) - GitLab:对应域名如
gitlab.example.com,token 必须带apiscope(不是read_api或read_repository) - Magento 等公私钥场景:用户名填
pubkey_abc,密码填privkey_xyz,复制时别带空格——用cat ~/.composer/auth.json | jq .看值是否为纯字符串
怎么安全重配 http-basic 而不暴露密码
别手写 auth.json,也别在命令行里明文输密码(会进 shell 历史)。正确做法是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 用
composer config --global http-basic.packagist.example.com username token,它自动校验 JSON 合法性,且敏感字段不进历史 - 如果要配 GitHub OAuth,用
composer config --global github-oauth.github.com your-token-here - 改完立刻验证:运行
composer config --global --list | grep -A2 auth,确认输出里有对应条目且值非空
镜像源地址写错也会触发 Invalid credentials
这不是认证问题,是 Composer 误判了响应类型。比如:
- 把
https://mirrors.aliyun.com/composer/写成https://mirrors.aliyun.com/composer(少末尾斜杠),请求变成/composerpackages.json→ 404 → 某些镜像服务返回登录页 HTML → Composer 解析失败后统一抛Invalid credentials - 用了已停服镜像(如
packagist.phpcomposer.com),返回 403 或空白页,同样被误判 - 验证方式:先
composer config -g repo.packagist看当前配置,再curl -I https://your-mirror-url/packages.json查 HTTP 状态码和Content-Type是否为application/json
改完 auth.json 或镜像后,别忘了删 composer.lock ——截至 2026 年 7 月 31 日,这仍是最高频被跳过的环节。










