答案是系统级网络连通失败,需先验证DNS与端口连通性,再检查镜像配置是否满足repo.packagist单数键、HTTPS结尾斜杠、显式type值三要素,并清除缓存及vendor/和composer.lock。

报“Connection refused”或cURL error 7,先别动composer config
这不是 Composer 配置错了,是系统根本没连出去。DNS 解析失败、防火墙拦截、代理干扰都会导致这个错误,跟 repo.packagist 配得对不对无关。
直接运行:ping packagist.org —— 如果返回 unknown host,说明 DNS 挂了,立刻换 DNS(比如 8.8.8.8);
再跑:curl -v https://mirrors.aliyun.com/composer/ —— 卡在 * Connected to 是网络层不通,卡在 * TLS handshake 是证书或 SNI 问题;
企业环境常见陷阱:COMPOSER_DISABLE_TLS=1 可临时绕过证书验证(仅调试),但更稳妥的是更新 PHP 的 CA 证书(openssl.cafile 和 curl.cainfo 指向最新 cacert.pem)。
镜像配了却没生效,检查三个硬条件是否全满足
composer config -g repo.packagist 输出为空、null 或仍是官方地址,说明配置根本没写进去——不是“没生效”,是压根没存成功。
必须同时满足:
-
repo.packagist键名不能写成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/"}。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目根目录有 "repositories" 字段,全局镜像就彻底失效
哪怕 composer.json 里只写了 "repositories": [],Composer 也会完全忽略全局配置——不是优先级低,是直接跳过。
排查方法:
- 运行
composer config --list | grep repo,看实际生效的仓库列表 - 临时清掉项目级配置:
composer config --unset repositories(注意没-g) - CI/CD 或宝塔环境更麻烦:你用
root配的全局镜像,但实际执行的是www用户,得用sudo -u www composer config -g repo.packagist ...单独配
推荐做法:进项目根目录,运行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加 -g),它会自动写进 composer.json 的 repositories 字段,key 固定为 "packagist"。
报 404、SSL 错误或 JSON decode error,大概率是缓存残留
这类错误不是网络不通,而是 Composer 拿着旧路径去新镜像上找不存在的东西——composer.lock 里硬编码了 provider 地址,vendor/ 和缓存里还存着旧元数据。
必须三步一起做:
- 清缓存:
composer clear-cache;Windows 用户还得手动删%LOCALAPPDATA%\Composer\cache - 删掉
vendor/和composer.lock - 手动验证镜像可用性:
curl -I https://mirrors.aliyun.com/composer/packages.json必须返回HTTP/2 200;若返回 HTML 页面(如人机验证),说明该镜像不适合自动化场景
某些看似 PHP 语法的错误(比如 file_put_contents(): Only variables should be passed by reference),其实是镜像返回了 BOM 头或乱码,换阿里云或腾讯云源就能解决。

















