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

国内能用的 Composer 镜像源只剩四个:阿里云、清华大学、腾讯云、安畅网络。其他像 packagist.phpcomposer.com、packagist.laravel-china.org 已停服或返回 404;所有 HTTP 地址(无 https://)在 Composer 2.2+ 中默认被拒绝,配了也静默 fallback 回 https://packagist.org。
为什么 composer config -g repo.packagist 总不生效
不是网络问题,是命令缺了三个硬性要素:
- 键名必须是
repo.packagist(不能是repos.packagist、repository.packagist或拼错) -
composer是必须显式写出的type值(漏掉就等于没配) - URL 必须以
/结尾(https://mirrors.aliyun.com/composer/✅,少斜杠会拼成/composerpackages.json导致 404) - 必须加
-g参数,否则写入的是项目级配置,查不到
验证是否成功:运行 composer config -g repo.packagist,输出必须是完整 JSON 对象,例如:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。若为空、null 或仍显示 https://packagist.org,说明根本没写进去。
项目级配置比全局更可靠
团队协作或 CI/CD 场景下,全局配置容易被覆盖(比如宝塔面板用 www 用户执行,而你配的是 root 的 config)。项目级配置直接写进 composer.json,拉代码即生效:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 进入项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意不加-g) - 该命令自动向
composer.json的repositories字段追加packagist条目,不覆盖已有私有源 - 若已有
"repositories": {},别手动编辑 JSON——格式错一个逗号就会导致composer install报错 - 务必加上
"packagist.org": false,防止 fallback 到官方源
composer install 卡在 “Resolving dependencies” 不是镜像问题
镜像只加速元数据拉取和 ZIP 下载,“Resolving dependencies” 卡几十秒,基本和镜像无关。要查:
-
composer.json里有没有写死大量dev版本约束(如"^1.0@dev"),导致版本回溯爆炸 - PHP 是否缺失
openssl或zip扩展(composer diagnose可暴露) -
vendor目录权限混乱或被其他进程占用 - 企业网络是否拦截了 HTTPS 请求(临时试
composer config -g secure-http false,仅调试) - 最常被忽略的是旧
composer.lock文件——它记录的是原始源地址,不删就永远走不了新镜像
换源后卡在 “Loading composer repositories” 怎么快速定位
这不是网络问题,是元数据缓存没刷新或配置被覆盖:
-
composer clear-cache清 ZIP 和 provider 缓存 - 强制刷新元数据:
composer update --refresh(≥2.5)或手动删缓存目录:rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer - 检查项目级
composer.json是否含repositories字段——它会无提示覆盖全局配置,且不报错 - 加
-vvv参数看真实请求地址,否则等于“盲装”
不同 ISP 下响应不一致的根本原因是三大运营商 DNS 系统独立,对同一镜像域名解析结果可能完全不同:电信倾向华南节点、联通偏好华北 CDN、移动有时走中转代理导致 TLS 握手失败。验证方式:dig mirrors.aliyun.com +short 查当前解析 IP,curl -I https://mirrors.aliyun.com/composer/packages.json 看 X-Cache 和 Age 值,Age > 300 就是陈旧缓存。

















