最快解法是改/etc/resolv.conf为114.114.114.114和223.5.5.5,并在/etc/hosts预置mirrors.aliyun.com等域名ip;再执行composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/并清缓存。

直接改 resolv.conf + /etc/hosts 最快生效
虚拟机或 Docker 容器里 Composer 卡在 Loading composer repositories,八成是 DNS 解析慢或失败,不是网络带宽问题。硬编码可信 DNS 和预置关键域名 IP,能跳过整个递归解析链路。
编辑 /etc/resolv.conf,只留两行(顺序不能错):
nameserver 114.114.114.114 nameserver 223.5.5.5
再往 /etc/hosts 加上这些(用 curl -I https://mirrors.aliyun.com/composer/ 确认当前 IP 是否可用):
223.6.6.6 mirrors.aliyun.com 223.6.6.6 packagist.org 223.6.6.6 github.com 223.6.6.6 githubusercontent.com
- 别让
systemd-resolved覆盖resolv.conf:运行sudo systemctl disable --now systemd-resolved - 改完立刻生效,不用重启服务或容器
- Windows WSL 或 macOS Parallels 用户同样适用,只要进到目标系统内操作
composer config -g 必须配对 repos.packagist 字段
只改 DNS 不够——Composer 默认仍会尝试连接 packagist.org 拿元数据,哪怕你本地能解析出 IP,TLS 握手和 CDN 路由也常失败。镜像源才是根本解法。
执行这条命令(注意是 repos.packagist,不是旧版的 repo.packagist):
composer config -g repos.packagist composer 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
composer config -g repos.packagist
输出应为完整 JSON 对象,含 "url": "https://mirrors.aliyun.com/composer/"。如果返回空或报错,说明你用的是 Composer 1.x,得换写法:
composer config -g repos.packagist '{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}'
- 项目级
composer.json中的repositories会覆盖全局设置,检查并删掉冗余项 - 换源后务必跑一次
composer clear-cache,否则旧缓存可能继续拉取海外元数据 - 清华源、腾讯云源也可用,但阿里云源在华东节点稳定性最高
Docker 容器内 DNS 优化要避开 host 模式陷阱
在 docker-compose.yml 里给服务加 dns 字段,只对 bridge 网络有效;若写了 network_mode: host,dns 字段直接被忽略。
正确写法(显式声明 bridge 网络 + dns):
services:
app:
image: php:8.3-cli
dns:
- 192.168.10.5
- 114.114.114.114
dns_search:
- svc.cluster.local
- internal
- 内网 DNS 放首位,公网 DNS 做兜底,避免单点故障
-
dns_search让curl db自动变成curl db.svc.cluster.local,省去硬编码全称 - 别给监控类容器(如
ddns-go、prometheus)配dns,它们不需要解析别人
别信 parallel-downloads,http-max-concurrent-downloads 才是真并发
很多教程还在教设 parallel-downloads,但它在 Composer 2.2+ 已被废弃,设了也不生效,还可能干扰自动加载逻辑。
真正控制并发下载数的是这个:
composer config -g http-max-concurrent-downloads 10
- 值设 8–10 合理,超过 12 容易触发
file_put_contents(/tmp/): failed to open stream - 仅对
composer install生效,update因依赖图计算仍部分串行 - 必须配合镜像源使用——没换源时,并发再多也卡在 TLS 握手上
- CI/CD 中建议组合:
composer install --no-dev --prefer-dist --optimize-autoloader
DNS 优化最易被忽略的点是:改了宿主机 DNS,却没同步进虚拟机或容器;或者配了镜像源,但没清缓存,导致日志里看着走的是 mirrors.aliyun.com,实际请求仍发向 packagist.org。每次调优后,用 composer install -vvv 看真实请求域名,比猜靠谱得多。










