临时换源只需在项目根目录执行composer config repo.packagist composer https://mirrors.aliyun.com/composer/,该命令将镜像配置写入当前项目composer.json的repositories字段,末尾斜杠不可省略,且不影响其他项目。

Composer 默认源在国内下载极慢,切中文镜像能立竿见影提速,但不是所有镜像都稳定可用,且切换方式有坑。
如何临时换源(只对当前项目生效)
适合验证某个镜像是否可用,或在 CI/CD 中避免全局污染。执行前确保已在项目根目录:
- 运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云源,目前最稳) - 注意
repo.packagist是固定键名,不是变量;https://mirrors.aliyun.com/composer/末尾斜杠不能少,否则会报Could not parse version constraint - 该配置写入当前项目的
composer.json的repositories字段,不会影响其他项目 - 执行后建议删掉
vendor和composer.lock,再跑composer install确保全量走新源
全局换源的正确姿势(避免被私有包覆盖)
很多人用 composer config -g repo.packagist ... 后发现公司私有包装不上——因为全局设置会被项目级 repositories 覆盖,且 Composer 优先使用项目配置。
- 真正可靠的全局方案是改
composer.json的repositories数组,把 packagist.org 替换为镜像,并设"packagist.org": false - 推荐命令:
composer config -g repos.packagist composer https://mirrors.huaweicloud.com/repository/php/ - 紧接着必须执行:
composer config -g repos.packagist.org false,否则 Composer 仍会 fallback 到官方源,导致部分包拉取失败 - 华为云源支持 IPv6,对教育网用户更友好;阿里云源 CDN 节点更多,普通宽带更快
laravel/installer 或 create-project 拉不下来?检查是否绕过了镜像
这类命令底层会先拉 composer/create-project,而它默认不读项目级配置,容易忽略你设的镜像。
- 执行前加环境变量强制走镜像:
COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/ composer create-project laravel/laravel myapp - 或者先全局设好源并确认
composer config -g repos.packagist.org输出false,再运行 - 若仍卡在
loading package information,大概率是 DNS 污染,可尝试在/etc/hosts加一行:120.238.234.175 packagist.org(阿里云 DNS 解析 IP,非固定,需定期更新)
镜像不是万能解药:有些小众包未被镜像同步,或镜像本身延迟数小时。遇到 Package not found 时,先 composer clear-cache,再临时切回官方源查证是否真不存在——别让镜像掩盖了真实问题。











