Composer生效的镜像环境变量仅有COMPOSER_REPO_PACKAGIST(需完整URL且以/结尾)和HTTP_PROXY/HTTPS_PROXY(用于代理),二者用途不同不可混用,优先级高于配置文件。

Composer 镜像环境变量有哪些
Composer 官方不直接提供 COMPOSER_MIRROR 这类全局镜像开关,实际生效的只有两个环境变量:COMPOSER_REPO_PACKAGIST 和 HTTP_PROXY(或 HTTPS_PROXY)。前者用于覆盖 Packagist.org 的主源地址,后者用于走代理(常见于企业内网或受限网络),二者用途完全不同,不能混用。
-
COMPOSER_REPO_PACKAGIST:必须设为完整 URL(含协议),例如https://packagist.phpcomposer.com或国内主流镜像如https://mirrors.aliyun.com/composer/ -
HTTP_PROXY/HTTPS_PROXY:仅在需要代理访问原始 Packagist 时使用,值格式为http://user:pass@host:port;若代理不支持 HTTPS 隧道,composer install可能卡在Downloading https://packagist.org/packages.json - 环境变量优先级高于
composer.json中的repositories配置,也高于config.json中的repositories.packagist.org.url
为什么 set COMPOSER_REPO_PACKAGIST 没生效
最常见原因是 URL 缺少末尾斜杠或协议错误。Composer 要求该变量值必须是合法、可访问的完整镜像地址,且以 / 结尾——否则会拼接出错误路径,比如 https://mirrors.aliyun.com/composer(无尾斜杠)会导致请求变成 https://mirrors.aliyun.com/composerpackages.json,404。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 正确写法:
export COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/(注意结尾/) - Windows CMD 下用
set COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/,PowerShell 用$env:COMPOSER_REPO_PACKAGIST="https://mirrors.aliyun.com/composer/" - 执行
composer config -g repo.packagist可验证是否被覆盖;若输出仍是{"url": "https://packagist.org/"},说明变量未加载或拼写错误 - 某些 CI 环境(如 GitHub Actions)需在
env:块中显式声明,不能只靠 shell export
如何临时切换镜像而不改环境变量
不需要动环境变量也能快速切镜像,用 composer config 命令更可控,尤其适合多项目混用不同源的场景。
- 全局设置(影响所有项目):
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/ - 当前项目设置(写入本目录
composer.json):composer config repos.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/ - 若之前用过
COMPOSER_REPO_PACKAGIST,它会强制覆盖上述配置;要彻底清空,运行unset COMPOSER_REPO_PACKAGIST(Linux/macOS)或set COMPOSER_REPO_PACKAGIST=(Windows CMD) -
composer config -g --unset repos.packagist可还原为官方源
镜像配置后仍报 SSL 或 timeout 错误
这不是镜像地址本身的问题,而是 Composer 默认启用 TLS 验证,而部分老旧镜像或自建镜像可能证书链不全,或网络中间设备拦截了 HTTPS 流量。
- 先用
curl -I https://mirrors.aliyun.com/composer/packages.json测试镜像连通性;如果 curl 也失败,说明是网络或镜像服务问题 - 不要轻易关 TLS:
composer config -g secure-http false有安全风险,仅调试用;生产环境应换用证书正常的镜像(如清华、阿里云目前均支持标准 HTTPS) - 若公司网络强制代理,但镜像站又不允许代理中转(如返回 403),此时必须用
COMPOSER_REPO_PACKAGIST直连镜像,而非依赖HTTPS_PROXY - Composer 2.2+ 对镜像响应头要求更严格,部分旧镜像未返回
Content-Type: application/json会导致解析失败,可加-vvv查看详细错误
COMPOSER_REPO_PACKAGIST 多了一个空格、少了一个斜杠,或者被某个 shell 配置文件里的旧 export 覆盖了。

















