答案是90%的Composer安装卡顿或Connection refused错误源于镜像配置错误或未生效,需严格执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/并清缓存,再通过composer diagnose和-vvv日志验证真实请求域名。

Composer 依赖安装卡住、报 Connection refused 或 curl error 7,90% 不是网络断了,而是镜像源没切对或根本没生效——换源命令写错一个字母、少个斜杠、漏清缓存,就会安静 fallback 到 packagist.org,连错误提示都不给你。
确认当前镜像是否真在用
别只看 composer config -g repo.packagist 输出是不是 URL,要看 Composer 实际发出去的请求:
- 运行
composer diagnose,找到Repo packagist.org:这一行,后面必须是mirrors.aliyun.com或mirrors.tuna.tsinghua.edu.cn等国内域名,不是packagist.org - 再跑一次
composer install -vvv --no-progress | grep -i "reading packages.json",日志里出现的路径必须含mirrors-aliyun-com-composer或类似结构,否则就是没走镜像 - 常见静默失败原因:
repos.packagist(多一个 s)、repo.packagist.org(Composer 2.2+ 要求写法)、URL 末尾缺/导致拼成/packages.json→ 404
执行正确换源命令并强制清缓存
阿里云镜像是目前最稳的选择,但必须严格按格式执行,否则白配:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局切换(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(注意末尾/和中间的composer类型标识) - 立刻清缓存:
composer clear-cache—— 这步跳过,90% 的“换源无效”就出在这里 - 验证生效:
composer config -g repo.packagist应输出完整 JSON 对象,含"type": "composer"和该 URL - 不建议用已下线的旧源,如
https://packagist.phpcomposer.com(404)、https://packagist.laravel-china.org(2025 年底关停)
为什么换源后还报 timeout 或 connection reset
镜像只加速 dist 包下载,对 Git clone、私有源、source 模式完全无效;且部分失败是链路层干扰,不是超时阈值问题:
- 检查
composer.json是否含"prefer-source": true或git@类仓库地址,这类会绕过镜像直连 - 临时提高 HTTP 层超时:
composer config -g http-timeout 600(process-timeout在 downloading 阶段不生效) - 禁用 IPv6(CI/宝塔常见):
COMPOSER_IPV4=1 composer install - SSL 握手失败(cURL error 60)大概率是 CA 证书缺失或系统时间偏差 >5 分钟,需查
openssl_get_cert_locations()并校准时间
vendor 目录不完整却没报错?别信它
Composer 中断后 vendor/ 可能半残:文件存在但 autoload.php 为空、类映射缺失、installed.json 损坏——这些都不会触发明显错误,直到你 require 时才爆 Class not found:
- 先检查:
ls -l vendor/autoload.php,若不存在或为空,说明 install 没跑完 - 别手动 touch 或复制 autoload.php,它必须由 Composer 基于
composer.lock和已下载包结构生成 - 安全重试方式:
composer install --no-autoloader --no-scripts --prefer-dist(跳过 autoload 生成和脚本执行,专注补全包) - 切忌删 vendor 后重装:已成功安装的包会被重复拉取,且可能因版本漂移引入兼容问题
最易被忽略的一点:DNS 解析失败会卡死在第一步,所有换源、清缓存操作都无效。务必先用 nslookup repo.packagist.org 1.1.1.1 确认能否解析,再动 Composer 配置。

















