答案是系统级网络问题,需按dns→镜像→证书→权限顺序排查:先ping和curl验证连通性,再全局配置阿里云镜像(含末尾斜杠)、清缓存,接着检查tls握手与ca证书,最后修复vendor目录属主。

报“Connection refused”或“cURL error 7”说明443端口根本没通
这不是 Composer 配置错了,也不是 PHP curl 扩展没开——php -m | grep curl 能看到就表示扩展可用。真正卡在系统层面:DNS 解析失败、防火墙拦截、代理干扰,或目标服务器 443 端口压根没响应。
先验证连通性:ping packagist.org 如果返回 unknown host,说明 DNS 挂了;如果能 ping 通但 curl -I https://packagist.org 卡住或报 Failed to connect,大概率是 443 被策略封了(常见于公司网络、学校出口、某些云主机安全组)。
- Linux/macOS:临时改 DNS,往
/etc/resolv.conf加一行nameserver 8.8.8.8 - Windows:手动在网络适配器里设 DNS 为
114.114.114.114或8.8.8.8 - 手机热点一试便知——如果切热点后
composer install立刻成功,基本锁定是本地网络策略问题
换镜像源必须用全局配置,composer.json 里的 repositories 基本无效
很多人只改 composer.json 里的 repositories 字段,结果照样报错。因为该配置优先级低,且容易被 fallback 到官方源;真正起效的是全局配置。
阿里云镜像地址必须带末尾斜杠:https://mirrors.aliyun.com/composer/(少斜杠会拼成 /composerpackages.json 导致 404);type 必须写 composer,键名必须是 repo.packagist(不是 repos,也不是 packagist.org)。
- 全局设置(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist输出应为镜像 URL - 换源后必须清缓存:
composer clear-cache,否则旧失败记录还在,重试仍走原地址
HTTPS 证书校验失败也会表现为“Connection refused”
浏览器能打开 https://packagist.org,但 composer install 报错,很可能是企业中间人代理篡改了证书,导致 PHP curl 校验失败并静默转为连接拒绝(现象类似 cURL error 60 或直接 Connection refused)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
临时验证方式:curl -v https://mirrors.aliyun.com/composer/,看卡在 * Connected to 还是 * TLS handshake。若卡在 TLS,可强制走 IPv4:CURL_IPRESOLVE=4 composer install(Linux/macOS)。
- 开发机临时绕过证书校验:
composer config -g secure-http false+composer config -g cafile /dev/null - 更稳妥的做法:配对正确 CA 证书路径,运行
php --ini找到真实加载的php.ini,在里面设curl.cainfo = "/path/to/cacert.pem"
Permission denied 和端口不通无关,但常被误判为网络问题
看到 file_put_contents(/path/to/vendor/autoload.php): Permission denied 就别折腾 DNS 和镜像了——这是权限归属问题。90% 是之前用 sudo composer install 初始化过项目,导致 vendor/ 目录属主变成 root,后续普通用户无法写入。
检查归属:ls -ld vendor/,如果显示 root,不要 chmod -R 777 vendor/,那治标不治本。正确做法是删掉 vendor/ 和 composer.lock,再以当前用户身份重装。
- 修复全局缓存目录:
ls -ld ~/.composer,若属主非当前用户,运行sudo chown -R $USER:$USER ~/.composer - Docker 环境下要注意 UID 匹配,容器内运行
composer install生成的文件在宿主机上可能属root,下次 git 或 IDE 操作就会失败
真正卡在端口未开放时,所有操作都得从系统网络层开始查——别急着改 composer.json 或重装 Composer。DNS、镜像、证书、权限,这四步顺序不能乱,跳过前一步,后一步大概率白忙。










