华为云镜像源稳定,超时问题多因本地dns、http超时、子进程超时、autoload生成卡顿、配置错误(如键名repo.packagist不兼容composer 2.2+)、缓存未清、代理干扰、同步延迟或私有包未被镜像所致,需结合-vvv、diag和配置验证精准定位。

华为云镜像源本身稳定,但换源后仍超时,说明问题不在源站,而在本地配置、缓存或网络链路的某个环节被卡住。直接调高 timeout 或重试没用,得先定位卡点。
怎么看卡在哪一步
运行 composer install -vvv,盯住最后几行输出:
- 停在
Resolving dependencies:DNS 解析失败,跟 timeout 无关,换 DNS(如114.114.114.114)或dig packagist.org测试 - 停在
Downloading https://mirrors.huaweicloud.com/...:HTTP 层卡住,该调http.timeout,不是process-timeout - 停在
Executing command(比如git clone):子进程超时,process-timeout或环境变量COMPOSER_PROCESS_TIMEOUT才生效 - 停在
Generating autoload files后无响应:不是网络问题,是文件系统或 PHP 配置(如 WSL2 下 symlink 解析慢、APCu 未启用 CLI 模式)
华为源配置是否真正生效
Composer 2.2+ 版本不认旧键名 repo.packagist,必须用 repositories.packagist.org。执行以下命令验证:
composer config -g repositories.packagist.org
正确输出应为完整 JSON 对象,例如:
{"type": "composer", "url": "https://mirrors.huaweicloud.com/repository/php/"}
如果报错、为空或显示 packagist.org 仍是官方地址,说明配置没写对。正确写法是:
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.huaweicloud.com/repository/php/"}'
注意 URL 结尾必须带 /,否则 Composer 2.5+ 会静默失败。
缓存和代理干扰最常被忽略
即使源改对了,旧缓存里还存着 packagist.org 的元数据,Composer 会继续尝试连官方源。必须清缓存:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer clear-cache
另外检查是否有代理劫持:
composer diag
重点看两行:
-
HTTP proxy:—— 若显示非空地址,说明出口被代理或公司网关拦截,镜像请求可能被绕过 -
Available repositories:—— 应明确列出https://mirrors.huaweicloud.com/repository/php/且标注为packagist
如有代理且不需要,用 composer config -g --unset http-proxy 清除。
华为源同步延迟与私有包冲突
华为云镜像对 Packagist 的同步延迟通常在 5 分钟内,但如果你装的是刚发布几小时的新包,可能还没同步到。此时 Composer 会 fallback 到官方源(如果配置了 fallback),而 fallback 过程容易触发超时。
更隐蔽的问题是项目里硬编码了私有仓库:
-
composer.json中有自定义repositories字段,且含git@或https://github.com/地址 —— 华为镜像不代理 VCS,这类请求仍走原始地址 - 私有 GitLab/GitHub 包若用 SSH 地址,需确认
GIT_SSH_COMMAND是否设了超时,或直接改用 HTTPS 克隆
这类包不会从华为源下载,但你误以为“换源就全加速”,实际只加速了公共包部分。
真正卡住的地方往往藏在 -vvv 最后一行、composer diag 的 proxy 输出、或 composer.json 里那行不起眼的 repositories 配置里——不是源不行,是你没让它真正跑起来。










