COMPOSER_AUTH环境变量用于安全注入私有包仓库认证凭据,其值必须是符合auth.json结构的合法JSON字符串,支持GitHub OAuth、HTTP Basic等多种认证方式,并在CI/CD中通过secrets安全传入。

COMPOSER_AUTH 环境变量用于在不暴露敏感信息的前提下,向 Composer 提供私有包仓库(如私有 Packagist、GitHub、GitLab 等)所需的认证凭据。它在 CI/CD 流水线中特别有用——避免把 token 或密码硬编码进 auth.json 或 composer.json。
格式必须是合法 JSON 字符串
该变量的值不是随意拼接的,而是一个经过 JSON 编码的字符串,结构需与 auth.json 文件一致。常见写法:
- GitHub Personal Access Token:
export COMPOSER_AUTH='{"github-oauth":{"github.com":"your_token_here"}}' - 私有 Packagist(如 Satis 或 Private Packagist):
export COMPOSER_AUTH='{"http-basic":{"repo.example.com":{"username":"user","password":"pass"}}}' - 支持多个源,可同时配置:
export COMPOSER_AUTH='{"github-oauth":{"github.com":"abc123"},"http-basic":{"packages.example.com":{"username":"api","password":"key456"}}}'
CI/CD 中推荐用法(以 GitHub Actions 为例)
不要直接写死 token,而是通过 secrets 注入,并确保 JSON 被正确转义:
- 在 workflow 文件中使用
env传入:env:
COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GITHUB_TOKEN }}"}' - 注意:单引号包裹整个字符串,内部双引号保留;若 token 含特殊字符(如
/、"),一般无需额外转义,GitHub Actions 会自动处理 - 运行
composer install前,Composer 会自动读取该变量并等效于存在auth.json
验证是否生效
可在 CI 步骤中加一行调试命令确认:
php -r "echo json_encode(json_decode(\$_SERVER['COMPOSER_AUTH'], true), JSON_PRETTY_PRINT);"- 或执行
composer config --global --list | grep -A5 auth(部分版本支持显示已加载的 auth 配置) - 如果私有包安装失败且报
401 Unauthorized或403 Forbidden,大概率是 JSON 格式错误或 token 权限不足
基本上就这些。关键是 JSON 合法、token 有效、权限匹配目标仓库。不复杂但容易忽略转义和结构细节。










