composer install 卡在 downloading 是因镜像未生效,需确保 repo.packagist 键名正确、命令含 type 值、url 以 https:// 开头且末尾带斜杠,并清缓存、验证日志、设 parallel-downloads=10,线上部署应使用项目级配置。

composer install 卡在 downloading 是镜像没生效
不是网速差,是默认连 packagist.org 导致 DNS 解析慢、TLS 握手卡顿、路径绕远。执行 composer config -g repo.packagist 查看当前源,如果输出仍是 "url": "https://packagist.org" 或为空,说明镜像根本没切成功。
必须同时满足三个条件才真正生效:
-
repo.packagist键名不能写成repos.packagist(多一个 s 就被忽略) -
composer是 type 值,命令里不能漏掉:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
https://开头,且末尾带斜杠:https://mirrors.aliyun.com/composer/✅,少斜杠会拼出/composerpackages.json直接 404
换源后仍慢,大概率是缓存没清
Composer 默认 15 分钟内复用本地元数据缓存,哪怕你刚配好镜像,它仍可能反复尝试从 packagist.org 拉 packages.json,卡在 DNS 或 TLS 阶段。
立刻执行:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
composer clear-cache(不是composer cache-clear,后者已废弃) - 看到两行输出:
Clearing cache (cache-dir):和Clearing cache (cache-vcs):才算成功 - 验证是否走新源:加
-vvv跑一次composer install,日志里请求的域名必须是mirrors.aliyun.com
parallel-downloads=10 能压到 30 秒内
这个参数只在 Composer 2.2+ 生效,先用 composer --version 确认版本。设太高反而翻车:
- 默认是 3,基本等于没开;推荐设为 10:
composer config -g parallel-downloads 10 - 如果报
file_put_contents(/tmp/): failed to open stream,说明临时文件竞争,降到 6 或 8 - 某些镜像不支持 HTTP/2 多路复用,并发请求会被排队堵死,可临时切回官方源测试:
composer config -g repo.packagist composer https://packagist.org
线上部署别依赖全局配置
宝塔、Docker、GitHub Actions 这些环境里,composer config -g 写的是当前用户的 ~/.composer/config.json,但实际运行命令的可能是 www、runner 或容器内无主用户——它们根本读不到你的配置。
可靠做法是项目级写入:
- 进项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g) - 它会自动向
composer.json的repositories字段安全追加,不会覆盖已有私有源 - 改完必须提交
composer.json到 Git,否则新机器拉代码后依然走默认源
镜像 URL 写错一个字符,Composer 就静默 fallback 到 packagist.org,日志里还看不出异常——这是最常被忽略的硬伤。










