必须使用composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/配置全局镜像,三要素缺一不可:键名repo.packagist(单数)、type值为composer、URL以/结尾;否则静默失效,仍直连packagist.org导致超时或404。

不配镜像源,就别想“绕过限制”——Composer 默认直连 packagist.org,国内访问必然卡在 DNS、TLS 或 404,所谓“快速获取”根本无从谈起。
为什么 composer config -g repo.packagist 是唯一生效入口
Composer 2.2+ 把官方源硬编码进内核,repositories 数组完全被绕过。你往 composer.json 里手动加镜像、甚至写进 repositories 字段,元数据请求(如 provider-symfony~6.0.json)仍会直连海外,结果就是反复超时或 404。
必须用这条命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
注意三个硬性条件:
-
repo.packagist是单数,写成repos.packagist或packagist.org都静默失效 -
composer是 type 值,不能省略,也不能写成composer-type或注释 - URL 必须以
https://开头,且末尾带/,少斜杠会拼出/composerpackages.json导致 404
验证镜像是否真在用,别信“配置成功”的假象
执行 composer config -g repo.packagist,输出必须是类似:
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
如果输出为空、null、或仍是 {"url": "https://packagist.org"},说明没生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
更可靠的方式是加 -vvv 跑一次安装:
composer install -vvv 2>&1 | grep "GET https"
看到的域名要是 mirrors.aliyun.com 或 mirrors.cloud.tencent.com 才算真正走镜像。
CI/CD 构建中常被忽略的三件事
本地看着快了,CI 却还在卡?大概率踩了这些坑:
- Docker 构建阶段用了镜像,但没清缓存:
composer clear-cache必须加在composer install前,否则仍读旧元数据 - CI runner 用户(如
www或runner)和你登录用户不一致,-g配的是当前 shell 用户,得单独给 runner 用户也跑一遍composer config -g -
composer.lock里记录的 dist URL 还是原始 GitHub 地址(如"url": "https://api.github.com/repos/monolog/monolog/zipball/..."),镜像完全不接管——此时必须删掉composer.lock后重装
遇到 407 或 TLS 失败?代理不是加个环境变量就行
公司内网常见 NTLM 认证代理(返回 407 Proxy Authentication Required),HTTP_PROXY 环境变量对 Composer 原生无效。
正确做法是加一层本地中转:
- 用
cntlm或px启一个监听127.0.0.1:3128的普通 HTTP 代理 - 再让 Composer 连它:
export HTTP_PROXY=http://127.0.0.1:3128 - 确认代理服务支持 CONNECT 隧道;若报
SSL operation failed,说明它不支持 TLS 中转,换纯 HTTP 代理地址
最省事的是问运维有没有免认证的 bypass 出口,比如 http://bypass-proxy.internal:8080,直接配这个比折腾中转稳得多。

















