“connection refused”或“curl error 7”表明请求根本未发出,根源在系统网络层:先用ping验证dns(unknown host即dns失败),再用curl检查连通性与tls握手,随后严格按repo.packagist单数、type值composer、url末尾带/配置镜像,清缓存、删lock/vendor,并排查属主权限及ca证书。

“Connection refused”不是 Composer 配错了,是请求压根没发出去——优先验证 DNS 和端口连通性,再换镜像源、清缓存、查归属权。
为什么 ping 不通 packagist.org 就别折腾 composer config
报 Connection refused 或 cURL error 7 时,Composer 连域名解析这步都没走完。根本不是配置问题,而是系统级网络卡死。
- 运行
ping packagist.org:返回unknown host→ DNS 解析失败,立刻改/etc/resolv.conf(Linux/macOS)或网络适配器 DNS(Windows),加8.8.8.8或114.114.114.114 - 能 ping 通但
curl -I https://mirrors.aliyun.com/composer/卡住 → 很可能是企业 HTTPS 中间人代理在静默拦截,不是 Composer 错,是 TLS 握手被断 - 浏览器能开
https://packagist.org但 Composer 报错 → 大概率证书校验失败,因为浏览器信任企业根证书,而 PHP cURL 没加载它
镜像源配置写错一个字符就等于没配
全局镜像必须严格满足三个条件,缺一不可,否则 composer config -g repo.packagist 看起来像生效了,实际请求仍走官方源。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 键名只能是
repo.packagist(不是repos.packagist,也不是repositories) - 中间必须显式传入
composer作为 type:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾: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/"}
换源后不 clear-cache = 白换
Composer 缓存里存着上次失败的地址和响应头,不清掉,重试照样走原路,连镜像服务器的门都摸不到。
- 执行
composer clear-cache是强制步骤,不是可选项 - 如果还卡,顺手删掉
vendor/和composer.lock,再跑composer install - CI/CD 环境特别注意:你用
root配的全局镜像,但 job 是www-data用户跑的,得用sudo -u www-data composer config -g repo.packagist ...单独配
Permission denied 写 vendor/ 不是网络问题,是归属权污染了
错误里带路径,比如 file_put_contents(/path/to/vendor/autoload.php): Permission denied,99% 是之前用 sudo composer install 导致 vendor/ 和 ~/.composer 所有者变成 root,后续普通用户完全无权覆盖。
- 快速确认:
ls -ld /path/to/vendor,看 owner 是否为root - 修复命令(Linux/macOS):
sudo chown -R $USER:$USER /path/to/project - 千万别
chmod 777—— 权限数字对了也没用,owner 不对,PHP 进程照样被拒
最常被忽略的点是:你以为在调 Composer,其实是在调 DNS、调系统 cURL、调证书链、调文件归属权。网络策略问题从来不在 composer.json 里,而在你敲下 composer install 前的那三秒系统状态里。










