Composer install卡在packages.json下载是因为默认源https://packagist.org在国内访问极不稳定,DNS解析和TLS握手常失败;解决方法是配置阿里云全局镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。

为什么composer install卡在packages.json下载?
因为默认源https://packagist.org在国内访问极不稳定,经常超时或返回空响应。这不是你网络问题,也不是项目配置错,而是 Packagist 本身没做国内 CDN,DNS 解析和 TLS 握手就可能失败。
实操建议:
- 先确认是否真卡在这步:运行
composer install -vvv,看到日志里反复重试https://packagist.org/packages.json就是源头问题 - 别急着删
vendor/或清缓存——镜像没切对,重装也没用 - 优先试全局镜像,避免每个项目单独配
全局设置阿里云镜像(推荐)
阿里云镜像稳定、同步及时,且支持 HTTPS 和完整元数据,适合作为默认源。执行一条命令即可生效:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
验证是否生效:
立即学习“PHP免费学习笔记(深入)”;
- 查配置:
composer config -g repo.packagist应输出{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 看实际请求:
composer diagnose会显示当前使用的仓库 URL - 注意:
-g是 global,不要漏掉,否则只改当前目录
局部项目换腾讯云镜像(按需切换)
某些项目依赖私有包或需兼容内部 registry,这时要覆盖全局设置。进入项目根目录后执行:
composer config repo.packagist composer https://mirrors.cloud.tencent.com/composer/
关键点:
- 去掉
-g参数,这样修改只写入项目下的composer.json的repositories字段 - 如果项目已有自定义
repositories,这条命令会合并而非覆盖;想彻底替换,手动编辑composer.json中的repositories数组 - 腾讯云镜像偶尔同步延迟(尤其新发布的包),若
composer require xxx找不到最新版,可临时切回官方源测试:composer config --unset repos.packagist
镜像失效或 404 错误怎么办?
镜像地址不是永久有效,比如旧版文档常写的 https://packagist.phpcomposer.com 已停用,访问直接 404。
排查步骤:
- 浏览器打开镜像 URL,确认能返回 JSON(如
{"packages":[], "notify":"..."}) - 检查 Composer 版本:
composer --version,低于 2.0 的版本不支持部分新镜像的认证头,建议升级:composer self-update - 若仍失败,临时禁用镜像回退官方源:
composer config -g repo.packagist composer https://packagist.org - 企业内网环境要注意代理设置——镜像域名可能被 DNS 污染,建议用
dig mirrors.aliyun.com看解析 IP 是否合理
镜像本质是缓存代理,它不保证实时性,也不解决包本身缺失或版本冲突问题。真遇到 could not find package,先确认包名拼写、是否已废弃、PHP 版本是否匹配,再怀疑镜像。



















