store-auths 设为 false 时,composer config 命令不写入 auth.json;无论全局或项目级设为 false,指定用户名密码也不会落地,auth.json 不生成或更新,导致后续 install 报 401 错误。

store-auths 设为 false 时,composer config 命令不写入 auth.json
当你执行 composer config http-basic.repo.example.com user pass,Composer 是否把凭证存进 auth.json,取决于 store-auths 的值。默认是 prompt(交互式询问),但如果你全局或项目级设成了 false,命令就直接跳过写入,哪怕你指定了用户名密码也不会落地。
常见错误现象:运行命令后 auth.json 没生成、后续 composer install 报 401 错误,却查不到哪里漏配了凭证——十有八九是 store-auths 被关了。
-
composer config --global store-auths false→ 全局禁用,所有项目都不自动存凭证 -
composer config store-auths false→ 仅当前项目禁用,auth.json不会被创建或更新 - 设为
true或prompt才会触发写入逻辑;prompt会在终端问你“是否保存”,回车默认 yes
store-auths 和 auth.json 存放路径的优先级关系
store-auths 控制的是“要不要写”,但写到哪,由 Composer 的搜索路径决定:先找项目根目录,再找 COMPOSER_HOME(通常是 ~/.composer/),最后系统级目录。它不决定位置,只决定是否执行写操作。
容易踩的坑是以为设了 --global 就一定写进全局 auth.json —— 实际上如果 store-auths 是 false,连全局文件都不会碰。
- 项目级命令(无
--global)+store-auths true→ 写入项目根目录下的auth.json - 全局命令(带
--global)+store-auths true→ 写入COMPOSER_HOME/auth.json - 两者都设为
true,且项目级auth.json已存在 → Composer 仍优先读项目级,但config命令默认只改它指定的作用域,不会跨域覆盖
CI/CD 中 store-auths 应该设为什么值
在 CI/CD 环境里,你不该依赖 auth.json 文件落地,而应通过 COMPOSER_AUTH 环境变量传入凭证。此时 store-auths 必须设为 false,否则 composer config 命令可能意外把敏感信息写进工作目录的 auth.json,造成泄露风险。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
典型配置流程:
- 先运行
composer config --global store-auths false,堵住自动写文件的口子 - 再通过环境变量注入:
export COMPOSER_AUTH='{"http-basic": {"repo.example.com": {"username": "ci", "password": "xxx"}}}' - 最后跑
composer install --no-interaction,Composer 会跳过文件读取,直取环境变量
注意:COMPOSER_AUTH 优先级高于任何 auth.json,所以即使 store-auths 是 true,只要环境变量存在,文件内容也不会被读取——但留着 true 仍有风险,因为某次本地调试误执行 config 命令,就可能把 token 写进项目 auth.json 并被提交。
手动编辑 auth.json 时,store-auths 参数本身不起作用
store-auths 是 composer config 命令的行为开关,不是 auth.json 的配置项。你在 auth.json 里加 "store-auths": false 完全无效,Composer 解析时会忽略它。
真正起效的只有两处:
-
composer.json里的config.store-auths字段(项目级) - 全局配置中的
store-auths(可通过composer config --global --list查看)
也就是说,auth.json 只负责存凭证,不控制行为;控制行为的永远是 config 设置项。这点混淆会导致排查方向完全跑偏。










