内网Composer超时主因是DNS解析失败、TLS握手被拦截或镜像URL配置错误,需先用nslookup和curl -v验证底层连通性,再换有效镜像源、清缓存并检查全局/项目级配置冲突。

因为企业内网默认不放行外网域名解析和 HTTPS 出站请求,mirrors.aliyun.com、mirrors.tencent.com 这类镜像地址在没配 DNS 和代理的情况下根本解析不了、连不上——不是 Composer 配错了,是系统层面压根发不出请求。
内网 DNS 解析失败是第一道拦路虎
Composer 所有 HTTP 请求都依赖系统 DNS。如果 nslookup mirrors.aliyun.com 返回 Unknown host,后续所有配置都是空谈。
- 企业内网通常只允许解析内部域名,
mirrors.aliyun.com这类公网域名默认被 DNS 服务器丢弃 - Windows 用户注意:WSL2 和宿主机 DNS 独立,
cat /etc/resolv.conf可能显示127.0.0.53,实际走的是 Windows 的 DNS 设置 - 临时验证:直接
curl -I https://120.52.118.249/packages.json(阿里云镜像 IP),若通说明是 DNS 问题,不是网络不通
HTTPS 出站被防火墙或中间件拦截
即使 DNS 能解析,curl -v https://mirrors.aliyun.com/composer/packages.json 卡在 * TLS handshake,基本就是 TLS 层被阻断。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 常见于启用 HTTPS 解密的杀毒软件(火绒、360)、公司级 SSL 代理、Windows Defender 防火墙劫持
- 某些内网环境强制要求证书信任链完整,而镜像站用的 Let’s Encrypt 证书可能被拦截器替换成私有根证书,导致握手失败
- 验证方式:浏览器访问
https://mirrors.aliyun.com/composer/packages.json,若显示“您的连接不是私密连接”,说明 TLS 拦截已生效
镜像 URL 写错但 Composer 不报错
写成 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer(少斜杠)或 repos.packagist(多 s),配置就静默失效,Composer 回退到 packagist.org,而后者在内网根本无法完成 TLS 握手。
-
composer config -g repo.packagist输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - URL 末尾必须带
/,否则 Composer 会拼出https://mirrors.aliyun.com/composerpackages.json(404) - Composer 2.2+ 已废弃
repo.packagist键名,但企业里大量旧脚本还在用,得先确认本地 Composer 版本:composer --version
项目级 repositories 字段无条件覆盖全局配置
只要项目 composer.json 里有 "repositories" 字段,哪怕内容是空数组或 {"packagist.org": false},全局镜像就彻底失效。
- CI/CD 构建机上尤其常见:全局配置写在
/root/.composer/config.json,但构建用户是www-data,读不到 - 验证命令:
composer config repo.packagist(不加-g),有输出就说明项目级配置正在接管 - 安全追加方式:
composer config repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/,它会 merge 到现有repositories数组,不破坏私有源
真正卡住的从来不是 Composer 本身,而是 DNS、TLS、权限这三层看不见的链路。改配置前,先跑 nslookup 和 curl -v,比反复清缓存有用得多。

















