composer 中文镜像下载慢的主因是配置错误或未生效,需验证全局源、检查项目级覆盖、用 -vvv 日志确认请求域名,并调高并发下载数至10,同时规避 xdebug、内存不足及 platform 不匹配等问题。

Composer 中文镜像下载慢,不是镜像本身“不快”,而是你没配对、没配全、没验证——换源后仍卡在 Downloading...,八成是配置写错了或被其他设置覆盖了。
确认当前用的是哪个镜像源
执行 composer config -g repo.packagist,输出必须是完整 URL(如 https://mirrors.aliyun.com/composer/)或带 "type": "composer" 的 JSON 对象。空、null、还是 https://packagist.org,说明根本没生效。
- 旧版 Composer(1.x)不认
repo.packagist,得用composer config -g repos.packagist '{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}' - 如果项目根目录下
composer.json里有repositories字段,它会直接覆盖全局配置,哪怕你全局设了也白搭 -
composer diagnose可检查配置合法性,但不能代替-vvv日志验证真实请求域名
验证是否真走镜像,别信“命令跑完了”
光看配置输出没用,要亲眼看到请求发到了镜像域名。运行:
composer show laravel/framework -vvv 2>&1 | grep "Downloading"
日志里必须出现 mirrors.aliyun.com、mirrors.tuna.tsinghua.edu.cn 这类域名。如果还看到 packagist.org 或 github.com,说明部分包绕过了镜像——常见原因:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 包的
composer.json里硬编码了"dist": { "url": "https://github.com/..." },这种不走镜像 - 用了
path类型仓库(本地依赖),或私有 Satis 源,镜像不代理这些 - 镜像同步有延迟(通常 5–30 分钟),新发布的包还没上镜像站
换源后仍卡在 Resolving dependencies
这个阶段根本不走网络,卡住和镜像无关,是 PHP 环境或依赖结构的问题:
-
COMPOSER_MEMORY_LIMIT=-1临时加内存,128M 默认值在复杂依赖树下容易爆 - Xdebug 启用中?用
php -d xdebug.mode=off $(which composer) install试试,慢 5–10 倍很常见 -
platform配置和实际 PHP 版本不匹配(比如"php": "7.4"却在 PHP 8.2 上跑),触发降级查找逻辑 -
composer.lock里残留已下线包,删掉vendor/和composer.lock,再跑composer install --no-cache
并行下载没开,换镜像也白搭
Composer 2.2+ 默认启用并发,但默认值只有 3,远没榨干带宽。必须手动调高:
- 正确命令是
composer config -g http-max-concurrent-downloads 10(parallel-downloads已弃用,设了也不生效) - 别设超过 12:太高容易触发 DNS 超时或临时文件竞争(报
file_put_contents(/tmp/): failed to open stream) - CI 构建时建议组合使用:
--no-dev --prefer-dist --no-autoloader --no-scripts,跳过所有非必要环节
最常被忽略的一点:Docker 构建里反复重装 vendor/ 是最大浪费,缓存 ~/.composer/cache 比缓存 vendor/ 更有效,且必须确保 composer.lock 在 composer install 之前就已存在。










