答案是卡在resolving dependencies即为dns解析失败,需用ping、dig验证dns连通性,清理hosts文件,切热点验证,并严格按repo.packagist单数键、type值composer、url末尾带/三要素配置镜像。

直接跑 composer install -v,比看任何报错都管用——它会强制走完 DNS → TCP → TLS → HTTP 全链路,卡在哪一步,终端就停在哪一行。
卡在 Resolving dependencies 是 DNS 问题,不是 timeout 能解决的
这一步根本没发 HTTP 请求,Composer 只在查镜像域名(比如 mirrors.aliyun.com)的 IP 地址。改 http.timeout 完全无效。
- 先手动验证:运行
ping mirrors.aliyun.com,返回unknown host就是 DNS 失败 - 换干净 DNS 测:运行
dig mirrors.aliyun.com @8.8.8.8,有 ANSWER SECTION 才算通 - 检查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows),删掉可能误写的packagist.org映射 - 切手机热点试一次——很多企业网默认屏蔽
packagist.org和github.com,不是你配错了
镜像源配置必须同时满足三项,否则静默 fallback 到官方源
阿里云、腾讯云、清华源等国内镜像,配错一个字符都不会报错,但也不生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 键名必须是
repo.packagist(注意是repo单数,不是repos) - 中间必须显式传入
composer作为 type 值:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须是 HTTPS 且末尾带斜杠:
https://mirrors.aliyun.com/composer/✅,少斜杠会拼成/composerpackages.json导致 404 - 验证是否真生效:
composer config -g repo.packagist应输出完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
curl error 28 / 35 不是 Composer 配置问题,而是 PHP 底层 TLS 或证书路径异常
composer diagnose 显示 OK ≠ 真通,它只对官方源发一次 HTTP HEAD(走 80 端口),不校验 HTTPS、不读你的镜像配置、也不模拟真实依赖解析。
- 运行
php -r "print_r(openssl_get_cert_locations());",紧盯default_cert_file和ini_cafile:是否为空?路径是否存在?文件大小是否 ≤10KB? - 再跑
curl -v https://packagist.org/packages.json,如果也报SSL certificate problem: unable to get local issuer certificate,说明是 PHP/cURL 层级证书问题 - Windows 用户尤其注意:XAMPP/WAMP 自带的
curl-ca-bundle.crt多数停更于 2021 年,不含 ISRG Root X1 等现代根证书 -
php.ini中必须同时配齐curl.cainfo和openssl.cafile,且指向同一cacert.pem文件,路径必须为绝对路径
vendor/autoload.php 生成失败却没报错,是最隐蔽的网络问题表现
部分包下载成功,部分因超时静默跳过,Composer 回滚时不提示“xx 包未写入”,而是生成一个残缺的 autoload.php——文件存在但为空或只有几行注释。
- 判断依据:
composer show报Could not find package in a pac...(截断明显) - 检查
vendor/autoload.php内容:若为空或仅含注释和<?php,基本就是网络中断导致 autoload 生成失败 - 临时绕过 IPv6 卡顿:
CURL_IPRESOLVE=4 composer install(IPv6 fallback 超时叠加可拖慢几分钟) - 别信
process-timeout:它只控制 PHP 进程总耗时,对 DNS/TLS/HTTP 超时完全无感;真正该调的是http.timeout(建议设为 600)
最常被忽略的是缓存和配置优先级:项目级 composer.json 里的 repositories 会覆盖全局镜像设置,而 composer clear-cache 不清理已写入的本地配置,得手动 composer config --global --unset repos.packagist.org 才算清干净。










