必须同步删除vendor/和composer.lock并确认镜像配置正确,否则仅清缓存无法解决failed to extract或超时问题。

清理缓存后仍超时?先确认是不是真清干净了
执行 composer clear-cache 只删了 ~/.composer/cache/files/ 下的 ZIP 和元数据,但不会动 vendor/、composer.lock,更不会重置镜像配置。如果之前卡在 Failed to extract,而你只清缓存没删 vendor/ 和 composer.lock,Composer 会继续用旧 lock 文件里的校验值去比对——哪怕缓存空了,它也会报错并退出,根本走不到下载那步。
必须同步操作:
- 删掉整个
vendor/目录(别只删部分) - 删掉
composer.lock(否则--no-cache也绕不过 dist.sha256 校验) - 确认
composer config -g repo.packagist输出的是镜像地址,不是https://packagist.org
卡在 Resolving dependencies 是 DNS,不是 timeout
清理完重试,如果日志停在 Resolving dependencies,且报 Could not resolve host 或 unknown host,说明 Composer 还没发 HTTP 请求,只是在查 mirrors.aliyun.com 的 IP 地址。这时候调 http.timeout 完全无效。
验证和修复方法:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
dig mirrors.aliyun.com @8.8.8.8,看是否返回有效 IP - 临时改系统 DNS:Linux/macOS 编辑
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)有没有错误映射 - 换手机热点试一次——很多企业网会屏蔽
packagist.org和github.com
卡在 Downloading https:// 才该调 http.timeout
只有日志出现 Downloading https://... 并反复 retry,或报 cURL error 28,才是真正的 HTTP 超时阶段。这时才需要调 http.timeout。
注意三个关键点:
-
http.timeout控制 DNS 解析 + TLS 握手 + 首字节等待 + 整个 body 传输,默认仅 300 秒,弱网下极易触发 - 全局设置:
composer config -g http.timeout 600;项目级更稳妥,在composer.json的"config"段加"http.timeout": 600 - PHP CLI 的
default_socket_timeout若低于你设的值(查法:php -i | grep default_socket_timeout),会提前掐断连接——常见默认值是 60,务必同步调高
镜像配置写对了但没生效?验证三要素缺一不可
命令跑完没报错,但 composer install -vvv 日志里仍出现 packagist.org,说明镜像根本没接管。静默失效最常因以下三点出错:
- 键名必须是
repo.packagist(单数,不是repos或repositories) - type 值必须显式传入
composer:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌
漏掉任何一项,Composer 都会 fallback 到官方源,且不提示、不报错——这才是最隐蔽的坑。










