临时换源用--repository参数,如composer require guzzlehttp/guzzle --repository=https://packagist.laravel-china.org;永久换阿里云镜像执行composer config -g repo.packagist https://mirrors.aliyun.com/composer/;换源仍慢需排查DNS、cURL、SSL、Git协议或项目私有仓库配置。

Composer 安装慢,基本就是源在国外,换国内镜像能立竿见影——但不是所有镜像都稳定,也不是所有项目都能无脑切。
怎么临时换源(单次命令有效)
适合调试、CI 环境或怕改全局配置出问题的场景。直接在 composer install 或 composer require 命令后加 --repository 参数:
-
composer require monolog/monolog --repository=https://packagist.phpcomposer.com(已停用,仅作示例) - 当前推荐:
composer require guzzlehttp/guzzle --repository=https://packagist.laravel-china.org - 注意:该参数只影响本次命令的包解析,不改变
composer.json或全局配置
怎么永久切换为阿里云镜像(推荐方式)
阿里云镜像目前(2024 年)仍较稳定,且支持 HTTPS 和完整元数据同步。执行以下命令即可覆盖全局配置:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/- 执行后,
~/.composer/config.json里会新增或更新repositories字段 - 验证是否生效:运行
composer config -g repo.packagist,输出应为https://mirrors.aliyun.com/composer/ - 若项目中已有自定义
repositories,全局镜像会被忽略——Composer 优先读取项目级配置
为什么换了镜像还是慢?常见原因排查
换源后仍卡在 Loading composer repositories with package information 或下载阶段,大概率不是源的问题:
- 本地 DNS 解析异常:尝试
ping mirrors.aliyun.com,若超时或丢包,需检查网络或改用/etc/resolv.conf换 DNS(如114.114.114.114) - PHP cURL 扩展未启用或 SSL 证书过期:运行
php -m | grep curl确认,再执行composer diagnose查具体报错 - 项目
composer.json中硬编码了私有仓库或旧版 Packagist 镜像(如https://packagist.phpcomposer.com),需手动清理 - 某些扩展包本身托管在 GitHub,Composer 仍需走 Git 协议克隆——这时换 Packagist 镜像无效,得配 Git 的代理或改用
https://协议(通过git config --global url."https://".insteadOf git://)
镜像只是加速的第一步;真正卡住的地方,往往藏在 DNS、SSL、Git 协议或项目自身配置里。动手前先 composer diagnose 看一眼,比盲目换源更省时间。


















