全局配置阿里云镜像需执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,并立即清缓存(composer clear-cache)且确认无项目级repositories覆盖。

直接执行这条命令就能全局生效
所有项目立刻走阿里云镜像,不用改每个项目的 composer.json,也不用重启终端:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
这条命令会写入你用户目录下的 ~/.composer/config.json,Composer 启动时自动读取。后续所有 composer install、composer update 都会从阿里云拉包。
- 必须带
-g(global),漏了就只改当前项目,且会写进composer.json的repositories字段,反而容易覆盖全局设置 -
repo.packagist是固定键名,不能写成packagist.org或repos.packagist(后者少个o,是常见拼写错误) - Windows 用户如果提示
Permission denied,大概率是杀毒软件或系统策略锁了config.json,试试管理员权限运行终端
为什么换完好像没变快?两个动作必须做
换源后不清理缓存,Composer 仍会用旧的元数据(比如包列表、版本映射),导致实际还是连官方源或走错节点。
- 立即执行:
composer clear-cache—— 强制清空本地索引缓存 - 验证是否真生效:
composer config -g repo.packagist.url,输出应为https://mirrors.aliyun.com/composer/ - 再跑一次
composer diagnose,看 “Repo:” 行是否匹配该地址;若仍是https://packagist.org,说明被项目级配置覆盖了
项目里写了 repositories 就会无视全局设置
Composer 配置优先级是:项目 composer.json > 全局 config.json > 默认值。只要项目里有 "repositories" 字段,哪怕只写了空对象或硬编码了官方源,全局镜像就完全失效。
- 检查方式:打开项目根目录的
composer.json,搜索repositories - 临时绕过:删掉该字段,再运行
composer clear-cache,否则缓存可能还在用旧源 - 不想删?可用命令重置:
composer config --unset repositories(注意这里没-g,只作用于当前项目) - 某些 Laravel 脚手架模板自带
"repositories": {"packagist.org": false},本质是禁用 packagist,但没指定替代源,结果就是找不到包
create-project 第一次就卡住?得加参数强制指定
composer create-project 默认用全局源,但很多模板(尤其是私有或老旧的)自带 composer.json,里面已固化官方源,导致初始化阶段就失败。
- 安全做法:加
--repository-url参数,例如:composer create-project laravel/laravel demo --repository-url=https://mirrors.aliyun.com/composer/ - 别信
--no-plugins或--ignore-platform-reqs,它们对源切换无效 - 如果模板本身依赖未同步到镜像的包(极少见),可临时切回官方源:
composer config -g --unset repos.packagist,装完再换回来
最常被忽略的是缓存和项目级配置的冲突——很多人执行了 config -g 就以为万事大吉,结果在某个老项目里反复超时,却没意识到那里的 composer.json 早把源锁死了。










