确认是源问题而非本地网络或防火墙:用curl测试packagist.org和国内镜像响应,前者超时/000、后者200即证镜像有效;两者均超时则查代理、dns或出口策略;换镜像应优先项目级配置composer config repo.packagist composer https://mirrors.aliyun.com/composer/,验证输出须为完整url。

Composer update 卡在 Reading composer.json 或直接报 cURL error 28: Operation timed out,大概率不是你网络真断了,而是默认源(packagist.org)在国内访问不稳定——换镜像能立刻缓解,但得选对、配对、验对。
怎么确认是源的问题,而不是本地网络或防火墙?
直接用 curl 测试两个关键地址的响应时间:
curl -I -s -w '%{http_code}\n' -o /dev/null https://packagist.org/packages.json -m 10
如果超时或返回 000,再试国内镜像:
curl -I -s -w '%{http_code}\n' -o /dev/null https://packagist.phpcomposer.com/packages.json -m 10
- 前者超时 / 无响应,后者返回
200→ 镜像切换有效 - 两者都超时 → 检查代理、DNS(比如是否误设了
127.0.0.1的 hosts 条目)或公司出口策略 - 注意:
packagist.phpcomposer.com已停用,现在主流用https://mirrors.aliyun.com/composer/或https://packagist.laravel-china.org(后者已归档,慎用)
换镜像的三种方式,优先级从高到低
全局配置影响所有项目,项目级配置更安全;临时命令最灵活,适合 CI 或排查场景:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 项目级(推荐):在项目根目录运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/ - 全局级(谨慎):运行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,会写入~/.composer/config.json - 临时生效:加
-vvv看实际请求地址,用composer update --repository=https://mirrors.aliyun.com/composer/
别用 composer config -g repos.packagist.org 这类旧写法,v2+ Composer 已弃用 repos.* 嵌套结构,只认 repo.packagist。
换了还是慢?检查是否被 HTTPS 重定向拖慢
阿里云镜像支持 HTTP 和 HTTPS,但部分企业网络会拦截或缓存 HTTP 重定向,导致卡在 302 跳转。实测发现:
- 用
https://mirrors.aliyun.com/composer/有时比http://版本还慢(尤其在某些教育网) - 可强制指定 HTTP(不推荐长期用,但排查时有用):
composer config repo.packagist composer http://mirrors.aliyun.com/composer/ - 验证是否生效:运行
composer config repo.packagist,输出必须是完整 URL,不能带引号或空格
镜像不是万能解药——如果项目依赖大量私有包或使用了自定义 repositories,Composer 仍会去原地址拉取那些包。这时候得单独为私有源配 type: vcs 或 package,镜像只管公共包。










