composer安装慢90%源于镜像未生效:键名必须为repo.packagist(非repos)、type值必填composer、url须含末尾/,三者缺一即静默回退至packagist.org;验证需同时满足config输出正确json及install -vvv日志显示镜像路径。

Composer install 慢,90% 不是因为你网络差,而是镜像根本没生效、缓存没清、或命令参数没配对——换源本身不难,但错一个字符就等于白配。
composer config -g repo.packagist 命令总不生效?
这条命令极易静默失败,不报错也不提示,但后续所有 install/update 都照旧走 https://packagist.org。关键要同时满足三个硬性条件:
-
repo.packagist是唯一合法键名:不能写成repos.packagist(多一个 s)、packagist.org或大小写混用 - 中间必须显式传入
composer作为 type 值:漏掉它,Composer 2.x 会直接 fallback 到默认源 - URL 必须是 HTTPS 且末尾带斜杠:
https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会导致拼出/composerpackages.json,404)
验证是否写进去了:运行 composer config -g repo.packagist,输出必须是类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的完整 JSON;空、null 或仍是 https://packagist.org,说明根本没写进去。
换源后还是卡在 “Loading composer repositories”?
这不是网络问题,是 Composer 还在读旧缓存里的元数据,试图从原始地址拉 packages.json。哪怕配置已改,它仍会卡在 DNS 解析或 TLS 握手环节。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须执行
composer clear-cache,否则提速效果归零 - 项目级配置(不加
-g)比全局更可靠:进项目根目录运行composer config repo.packagist composer https://mirrors.aliyun.com/composer/,它会安全合并到composer.json的repositories字段中 - 如果项目已有
"repositories": {"packagist.org": false},得先删掉该字段再重配,否则旧缓存可能触发回退请求
为什么加了 --prefer-dist 还是慢?
--prefer-dist 只在镜像真正生效时才起作用。国内镜像几乎不缓存 source 包(Git clone),只缓存 dist(ZIP/TAR)。镜像没切成功时,--prefer-dist 会 fallback 到慢速 source,甚至失败。
- 确认镜像生效的最直接方式:删掉
vendor/和composer.lock,运行composer install -vvv,日志里出现https://mirrors.aliyun.com/composer/才算真走镜像 - 并行下载需 Composer 2.2+,设
composer config -g http-max-concurrent-downloads 10(注意不是parallel-downloads,后者已弃用) - CI 场景推荐组合:
composer install --no-dev --prefer-dist --no-autoloader --no-scripts,autoload 和脚本可延后单独执行
卡在 “Resolving dependencies” 和镜像无关
镜像只加速下载环节(Downloading、Fetching package),不解决本地依赖求解慢的问题。如果卡在这里超过 10 秒,大概率是:
-
composer.lock缺失或损坏,导致install退化为update -
composer.json中有"minimum-stability": "dev"或宽泛约束(如"*"),触发组合爆炸式求解 - Xdebug 启用中:会让求解慢 5–10 倍,临时禁用:
php -d xdebug.mode=off $(which composer) install - PHP CLI 模式下 OPcache 被禁用:某些 Docker 镜像或自定义
php.ini会关掉它,影响 Composer 自身代码执行效率
真正容易被忽略的是:composer.lock 文件里记录的 dist URL 仍指向原始源,哪怕镜像已生效,install 仍会先尝试旧地址——必须清缓存 + 重新生成 lock 文件才能彻底切换。










