为什么 Composer 会突然要输用户名密码?
这不是 Composer 本身的问题,而是你正在访问的仓库(比如私有 Packagist、GitLab、GitHub Enterprise 或自建 Satis)启用了 HTTP Basic Auth。Composer 在拉取 composer.json 中声明的包时,遇到 401 Unauthorized 响应,就会中断并提示输入凭证。
常见触发场景:
- 公司内部私有包仓库配置了 Nginx/Apache 的
auth_basic - 使用
repositories指向了需要认证的 Git URL(如https://git.example.com/org/pkg.git),且该地址受基础认证保护 - 执行
composer update时,某依赖的源被重定向到需认证的镜像或代理
如何安全地预存凭证,避免交互式输入?
手动输密码既不安全也不适合 CI/CD。正确做法是用 Composer 自带的 config 命令把凭证写进 auth.json —— 它会自动加密存储(仅限 HTTPS 协议下的域名级匹配)。
执行以下命令(替换为你的实际域名和凭据):
composer config -g http-basic.git.example.com username password
这会在全局配置目录(~/.composer/auth.json 或 %APPDATA%\Composer\auth.json)中写入结构化条目。Composer 后续请求 https://git.example.com/... 时会自动带上 Authorization: Basic ... 头。
注意: