卡在“Resolving dependencies”是SAT求解器暴力回溯版本冲突,非网络问题;此时换镜像、调超时、清缓存均无效,应运行composer update --dry-run -vvv定位卡点,用composer why-not直击阻断链。

不是命令坏了,是它卡在某个具体环节没输出——不加 -vvv 就动手换源、清缓存、调超时,90% 是白忙。
卡在 Resolving dependencies 是 SAT 求解器死循环,换镜像完全无效
这一行出现后 CPU 拉高、内存缓慢上涨,说明 Composer 还没发任何 HTTP 请求,纯属本地暴力回溯版本约束。此时 http.timeout、process-timeout、换镜像全不生效。
- 先确认是否真卡在这:运行
composer update --dry-run -vvv,盯最后几行是否反复出现Trying: vendor/package或嵌套依赖路径 - 常见诱因:
"^1.0 || ^2.0"这类宽泛约束、"dev-main"引入私有包、多个包 require 冲突大版本(如symfony/console^5 和 ^6 并存) - 临时缓解:删掉
require-dev里的非核心工具(如phpstan/phpstan),或直接加--no-dev - 别忽略 autoload 扫描范围:若
vendor/composer/autoload_classmap.php超过 2MB,求解器也会被拖慢
卡在 Downloading https://… 才是镜像问题,必须验证 URL 是否真实可用
看到这行且后续无输出,说明请求已发出但没等到响应。此时只有 http.timeout 和镜像本身起作用,process-timeout 完全不参与。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 手动验证镜像是否通:运行
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回200 OK;若卡在Resolving host,是 DNS 问题;卡在 TLS handshake,可能是 OpenSSL 版本太老 - 阿里云当前稳定地址是
https://mirrors.aliyun.com/composer/(结尾必须有/),别用http://开头,也别加/packages.json - 临时调试优先用环境变量:
COMPOSER_HTTP_TIMEOUT=600 composer install,避免污染全局配置 - PHP 自身也有 socket 超时限制:运行
php -i | grep default_socket_timeout,CLI 模式下若为 60,可临时绕过:php -d default_socket_timeout=600 $(which composer) install
切镜像后没生效?三件事必须查完再重试
镜像切换失败几乎全是配置写错或被覆盖,不是网络或权限问题。
- 运行
composer config -g repo.packagist,正确输出应类似{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};如果为空、null或旧地址(如已下线的packagist.phpcomposer.com),说明根本没写进去 - 进项目目录,运行
composer config repositories,若输出非空(尤其含"packagist.org": false或数组),说明项目级composer.json中的repositories字段已覆盖全局配置 - 必须执行
composer clear-cache;否则旧元数据仍从缓存读取,镜像变更不触发真实下载
一行命令切阿里云镜像,但漏掉任一要素就静默失效
Composer 2.2+ 严格识别 repo.packagist(单数、小写、无 s)这个键名,且必须同时满足三项:type 值为 composer、URL 以 / 结尾、协议为 HTTPS。
- 正确命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 常见错误:
repos.packagist(多写 s)、省略中间的composer(type 值)、URL 少末尾/、用http://地址 - 别用网上流传的 sed 脚本直接改
~/.composer/config.json:macOS/Linuxsed -i语法不兼容,JSON 格式易破坏,且 Composer 2.9.6 后COMPOSER_HOME可能被自定义,~/.composer不一定准确 - 恢复官方源:
composer config -g --unset repos.packagist(注意是repos.packagist,不是repo.packagist)
真正卡点永远藏在 -vvv 最后一行里——没看到那行输出,所有操作都只是在猜。镜像地址写错、缓存没清、项目级配置覆盖、PHP socket timeout 过短,这些细节比“一键脚本”更关键。

















