答案是cURL error 7/Connection refused表明系统层网络失败,需依次验证DNS、TLS、代理、镜像URL(HTTPS且末尾带/),再清缓存、修归属权、检查CA证书。

“cURL error”不是 Composer 配错了,是 PHP 底层网络请求在系统层就失败了——得先确认 DNS、TLS、代理、镜像 URL 这四关全过,再动配置。
看到 cURL error 7 / Connection refused 怎么办
这说明请求压根没发出去,不是 Composer 的锅,而是系统连不上目标域名的 443 端口。常见于 DNS 污染、防火墙拦截、企业 HTTPS 解密代理干扰。
- 先跑
ping packagist.org:返回unknown host就是 DNS 问题,立刻改/etc/resolv.conf加nameserver 8.8.8.8(Linux/macOS)或改 Windows 网络适配器 DNS - 能 ping 通但
curl -v https://mirrors.aliyun.com/composer/卡在* Connected to→ 网络层不通;卡在* TLS handshake→ 证书或 SNI 被中间人劫持 - 临时验证是否 TLS 导致:加
COMPOSER_DISABLE_TLS=1再跑composer install(仅调试!不能长期用) - 别信
composer config -g repo.packagist输出——它不反映真实请求地址,真要看走哪条路,得用composer install -vvv 2>&1 | grep Downloading抓第一行 URL
cURL error 28 超时卡在 Downloading 怎么调
cURL error 28 不是下载慢,是 DNS 解析或 TLS 握手阶段超时了。默认 300 秒太短,尤其在弱网或代理环境下,必须设对两个参数:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
http.timeout:控制单次 HTTP 请求总耗时(DNS + 连接 + 读取),单位秒,建议设为600 -
process-timeout:控制整个命令生命周期(含 git clone、unzip 等外部进程),单位秒,建议设为1200 - 命令示例:
composer config -g http.timeout 600和composer config -g process-timeout 1200 - 注意:
timeout是 v1 遗留字段,v2 已忽略;http.connect-timeout可额外设(如30),专防 DNS 或 TCP 建连慢
镜像配了却还是走 packagist.org?检查三要素
Composer 2.x 对镜像配置极其严格,漏一个就会静默 fallback 到官方源,且不报错不提醒。
- 键名必须是
repo.packagist(单数、小写、无 s),repos.packagist或repositories.packagist全无效 - 命令末尾必须显式传
composer类型值:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须 HTTPS 且以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(拼路径会变成/composerpackages.json,404) - 配完立刻验证:
composer config -g repo.packagist应输出完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
Permission denied 写 vendor/ 或 composer.lock 怎么修
99% 是目录归属权被 sudo 污染了。比如你用 root 跑过一次 composer install,之后 vendor/ 和 composer.lock 就变成 root 所有,普通用户再运行直接被拒。
- 看报错里带路径的那一行,比如
file_put_contents(/path/to/vendor/autoload.php): Permission denied - 立刻执行
ls -ld /path/to/vendor,如果 owner 是root,就是归属问题,不是权限数字不对 - 修复命令(Linux/macOS):
sudo chown -R $USER:$USER /path/to/project - 别乱
chmod 777——Composer 不认权限数字,只认 owner,硬改还可能触发安全警告 - CI/CD 环境特别注意:你用 root 配的全局镜像,但实际执行的是
www用户,得用sudo -u www composer config -g单独配
最常被忽略的其实是缓存和 CA 证书:损坏的 ~/.composer/cache/ 会复用半截响应,导致反复失败;curl.cainfo 指向过期证书文件,会让 TLS 握手静默卡死。清缓存 + 检查 php --ini 对应的 php.ini 中 curl.cainfo 是否指向有效的 cacert.pem 绝对路径,比重装 Composer 有用十倍。

















