Composer下载慢主因是镜像配置错误:键名必须为repo.packagist(非repos.packagist)、type值必填composer、URL末尾须带/,三者缺一即静默回退官方源;另需收紧PHP与稳定性约束、迁移缓存至SSD并确保用户级配置生效。

Composer下载慢,90%不是网络差,而是镜像根本没配对、配全、配准——repo.packagist写成repos.packagist、漏掉composer类型声明、URL末尾少/,都会导致静默 fallback 到官方源,你还在等 packagist.org 响应。
镜像配置为什么总不生效
不是 Composer 没反应,是它根本不报错,直接退回到 https://packagist.org。三个硬性条件缺一不可:
-
repo.packagist(注意:不是repos.packagist,多一个 s 就彻底失效) - 第二个参数必须是
composer(这是仓库类型标识,漏掉就当没配) - URL 必须以
https://开头,且末尾带/(https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌)
验证是否成功:composer config -g repo.packagist 输出应为完整 URL 字符串或类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的 JSON。如果为空、null 或仍是 https://packagist.org,说明完全没写进去。
项目级配置比全局更可靠,但命令不能乱用
进项目根目录后执行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加 -g)。这条命令会向 composer.json 的 repositories 数组**追加** packagist 条目,不会覆盖已有私有源。
别手动编辑 repositories,尤其当已有 Git 私有源时——手误删掉会导致依赖拉不到。如果项目里已有空的 "repositories": {},命令仍能安全追加;但如果写成 "repositories": [],命令会失败,需先补上键名再重试。
优势很明显:配置随代码提交,CI 构建时自动读取,新人 clone 后直接 composer install 就行,不用额外 setup。
换源后还卡在 “Resolving dependencies”?这不是网络问题
这个阶段根本不走网络,是本地 CPU 在暴力穷举满足所有约束的版本组合。常见真实瓶颈:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 删掉
"minimum-stability": "dev"—— 稳定版能砍掉 80% 的求解时间 - 收紧 PHP 版本约束:
"php": "^8.1"比"php": ">=7.4"少查几百个包的兼容性元数据 - 确保
composer.lock已提交,部署时始终用composer install(不是update) - 临时禁用 xdebug:
php -d xdebug.mode=off $(which composer) install,它会让解析慢 5–10 倍 - 检查
platform配置是否与实际 PHP 版本冲突(比如"php": "7.4"却在 PHP 8.2 上运行),触发降级查找逻辑
如果仍卡住,加 -vvv 看日志里有没有 Resolving dependencies 后长时间无输出——那是求解器在爆内存,不是网络卡。
缓存路径放错位置,install 会慢 2–5 倍
~/.composer/cache 若落在机械盘、WSL2 挂载的 Windows 目录、加密卷或 NFS 上,解压 ZIP 包时 I/O 就成瓶颈。
查当前路径:composer config --global cache-dir
强制迁移到 SSD 路径:composer config -g cache-dir /mnt/ssd/composer-cache
临时测试是否走新路径:COMPOSER_CACHE_DIR=/tmp/composer-cache composer install --dry-run,再看 /tmp/composer-cache 下有没有新文件生成。
注意:缓存目录必须可写,且别挂到低速卷上。CI、宝塔、systemd 服务往往以不同用户(如 www、git)运行,它们读的是各自家目录下的 ~/.composer/config.json,不是你 root 配的全局配置。

















