阿里云镜像更换需三步:先换源(composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/),再调http.timeout=600,最后强制IPv4;DNS问题导致的“Resolving dependencies”卡顿与timeout无关,需单独排查。

直接换阿里云镜像 + 调高 http.timeout 到 600 + 强制 IPv4,三步做完基本不卡。90% 的“超时”根本不是网络断了,是 Composer 默认等 30 秒就放弃、300 秒就报 cURL error 28。
卡在 Resolving dependencies 是 DNS 问题,不是 timeout 能解决的
这一步根本没发 HTTP 请求,Composer 只在查 mirrors.aliyun.com 或 packagist.org 的 IP 地址。改 http.timeout 完全无效,纯属白等。
- 常见现象:
Could not resolve host、unknown host、ping packagist.org失败 - 手动测 DNS:
dig mirrors.aliyun.com @114.114.114.114,看是否返回正确 IP - 临时换系统 DNS:Linux/macOS 改
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否误写了错误的packagist.org映射 - 用手机热点试一次——很多企业网会屏蔽
packagist.org和github.com,但热点通常通
卡在 Downloading 才该调 http.timeout,建议设为 600
这才是真正的 HTTP 层超时。http.timeout 控制每次请求从 DNS 查询、TLS 握手到响应头返回的总时间,默认仅 60 秒,对国内镜像或大包明显不够。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 全局设置(推荐):
composer config -g http.timeout 600 - 项目级更稳妥(CI 友好):在
composer.json的"config"段加"http.timeout": 600 - 临时调试优先用环境变量:
COMPOSER_HTTP_TIMEOUT=600 composer install,避免污染配置 -
process-timeout在这里完全不生效;PHP CLI 的default_socket_timeout也会干扰,可绕过:php -d default_socket_timeout=600 $(which composer) install
换阿里云镜像源必须写对命令,漏一个字符就静默失败
命令必须同时满足三项硬性要求,否则不报错、不提示、也不生效:
- 键名是
repo.packagist(注意是repo单数,不是repos) -
composer是type值,不能省略(写成composer config -g repo.packagist https://就 fallback 到官方源) - URL 必须是 HTTPS,且末尾带斜杠:
https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌ - 正确命令(可直接复制):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否真正生效:
composer config -g repo.packagist应输出{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。如果返回空、null或仍是"https://packagist.org",说明配置失败
重试前必须清理 vendor 和 lock 文件,否则大概率重复失败
Composer 没有断点续传,中断后残留状态不可信。能否重试成功,取决于 vendor 和缓存里有没有损坏文件。
-
composer install --dry-run:如果大量显示Skipped,说明状态基本完整,可直接重试 - 如果输出以
Installing开头或直接报错(如Invalid argument supplied for foreach()),必须清理 - 执行
rm -rf vendor/ composer.lock(Linux/macOS)或rd /s /q vendor && del composer.lock(Windows) - 再加
--prefer-dist --no-scripts --no-plugins降低失败面 - 项目级
"repositories"字段会完全屏蔽全局镜像配置——检查用composer config repositories,空才安全
最常被忽略的是:换源命令写错、DNS 没调、http.timeout 和 process-timeout 混用、以及项目里藏着 repositories 数组。这四点占实际失败案例的 80% 以上。

















