截至2026年7月真实可用且稳定的国内Composer镜像源仅有四个:阿里云、清华大学、腾讯云和安畅网络;其余如phpcomposer.com等已停服,HTTP地址被Composer 2.2+默认拒绝。

哪些镜像源当前真实可用且稳定
截至2026年7月,经高频实测(Laravel 11、PHP 8.5.5、monolog 3.x 等主流包安装验证),仍在持续同步、响应正常、支持 Composer 2.9.6+ 元数据格式的国内镜像只有以下四个:
-
https://mirrors.aliyun.com/composer/—— 同步频率最高(约15分钟),TLS证书稳定,南方/北方用户延迟均低于60ms -
https://mirrors.tuna.tsinghua.edu.cn/composer/—— 清华大学镜像,学术网络质量极佳,教育网用户首推,但部分私有包索引略滞后 -
https://mirrors.cloud.tencent.com/composer/—— 腾讯云镜像,HTTPS证书链已修复,华南地区实测下载速度峰值达9.2MB/s -
https://php.cnpkg.org—— 安畅网络维护,Laravel 11 和 PHP 8.5 兼容包入库最快,适合新项目快速启动
其余常见地址如 https://packagist.phpcomposer.com、https://packagist.laravel-china.org 已停服或返回 404/502;所有 HTTP 地址(无 https://)在 Composer 2.2+ 中默认被拒绝。
为什么你配了镜像却还是走 packagist.org
不是网络问题,是配置未真正生效。Composer 2.x 对键名、type、URL 格式三者校验极严,任一出错即静默 fallback 回官方源:
- 键名必须是
repo.packagist(不是repos.packagist、repository.packagist或其他变体) - 命令中必须显式写上
composer这个 type 值(漏掉就等于没配) - URL 必须以
/结尾(https://mirrors.aliyun.com/composer/✅,少斜杠会拼成/composerpackages.json导致 404)
验证是否生效:运行 composer config -g repo.packagist,输出必须是完整 JSON 对象,例如:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。若为空、null 或仍显示 https://packagist.org,说明配置失败。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目级配置比全局更可靠
团队协作或 CI/CD 场景下,全局配置容易被覆盖(比如宝塔面板用 www 用户执行,而你配的是 root 的 config),项目级配置直接写进 composer.json,拉代码即生效:
- 进入项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意不加-g) - 该命令自动向
composer.json的repositories字段追加packagist条目,不覆盖已有私有源 - 若已有
"repositories": {},别手动编辑 JSON——格式错一个逗号就会导致composer install报错 - 必须显式添加
"packagist.org": false,否则 Composer 在遇到 abandoned 包时仍可能回源触发超时
配置后,composer.json 中应出现类似结构:"packagist": {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。
换源后仍卡在 Downloading?先清缓存再重装
镜像只加速新请求,旧缓存里存着 packagist.org 的元数据,Composer 会优先读缓存并尝试从旧地址校验,结果就是卡在 DNS 或 TLS 握手——根本没发请求到镜像。
- 必须执行:
composer clear-cache - 删掉
vendor/和composer.lock - 再跑:
composer install --no-cache(禁用缓存强制走新源) - 别试图保留旧
composer.lock——它记录的是旧源的包哈希,和镜像返回的元数据不兼容,必然报hash does not match
验证是否真走镜像:运行 composer show monolog/monolog -vvv 2>&1 | grep "Downloading",日志里必须出现 mirrors.aliyun.com 或类似镜像域名。如果看到 https://packagist.org,说明 fallback 触发了,配置没起作用。

















