auth.json绝不能提交到git,因其存储私有包仓库的敏感凭证;应删除项目级auth.json、改用全局配置并添加auth.json到.gitignore。

auth.json 本身不包含依赖项,但它存储了访问私有依赖所需的敏感凭证;一旦被提交到 Git,等于把私有包仓库的登录凭据公开给了所有人。
为什么 auth.json 会意外进 Git
最常见原因是执行了 composer config --auth 而没加 --global 参数。这条命令默认在当前目录生成 auth.json,而项目根目录通常没在 .gitignore 里覆盖它——git add . 时就顺手提交了。
- 检查是否已提交:
git ls-files | grep auth.json - 如果输出有结果,说明它已在版本历史里,需用
git rm --cached auth.json清除跟踪 - 别只删文件,还要确认
.gitignore里有这一行:auth.json - IDE(如 PHPStorm)可能自动启用 “store credentials in project”,得关掉对应设置
auth.json 放哪儿才真正生效
Composer 查找 auth.json 有严格顺序:项目根目录 → $COMPOSER_HOME/auth.json(通常是 ~/.composer/auth.json 或 %APPDATA%\Composer\auth.json)→ 环境变量 COMPOSER_AUTH。找到第一个就停,不会合并多个文件。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- Linux/macOS 下全局文件权限必须 ≤600,否则 Composer 静默忽略(不报错!)
- Windows 用户注意路径不是
C:\Users\Name\.composer\auth.json,而是%APPDATA%\Composer\auth.json - 域名必须和仓库 URL 的 host 部分完全一致:比如仓库是
https://gitlab.internal:8080/api/v4/...,auth.json里 key 就得是"gitlab.internal:8080",少端口、多www.、带协议都不行 - 项目级配置虽优先级高,但只对本项目有效,CI 构建时若以不同用户运行,很可能读不到
CI/CD 中怎么安全传凭据
本地开发用全局 auth.json + .gitignore 是够用的,但 CI 环境不能依赖文件落盘——推荐用 COMPOSER_AUTH 环境变量。
- 值必须是合法 JSON 字符串,例如:
COMPOSER_AUTH='{"http-basic": {"packages.example.com": {"username": "api", "password": "xxx"}}}' - GitHub Actions 中应通过
secrets.COMPOSER_AUTH注入,而不是写死在 workflow 文件里 - Docker 构建阶段可设
ENV COMPOSER_AUTH=...,但运行时不要硬编码,应通过--env动态传入 - Base64 编码不是必须的,但某些平台(如 older GitLab CI)要求,此时用
echo -n '...' | base64生成
最容易被忽略的一点:Composer 不报错地跳过无效 auth.json——你看到 Could not fetch,未必是密码错了,很可能是文件放错位置、权限不对、或域名拼写差一个字符。加 -v 运行 composer install,看日志里有没有 Reading authentication information from auth.json 这句,没有就说明根本没读到。










