执行 composer config -g --unset repos.packagist 可还原为官方源,但需配合 clear-cache,并确认无项目级 repositories 配置、环境变量及错误字段名干扰。

执行 composer config -g --unset repos.packagist 就能还原官方源
Composer 没有“恢复默认”按钮,它的行为逻辑是:只要全局配置里没有 repos.packagist 这个字段,就自动走 https://packagist.org。所以还原本质就是删掉这个配置项。
- 命令必须带
-g(global),否则只删当前项目composer.json里的repositories,对全局无效 - 字段名必须是
repos.packagist(复数repos),不是repo.packagist(单数)或packagist.org——写错不报错,但配置没被删 - 删完不会立刻生效,缓存还在,必须紧接着跑
composer clear-cache - Windows 用户若提示 Permission denied,可能是杀毒软件锁了
%APPDATA%\Roaming\Composer\config.json,试试管理员权限运行终端
验证是否真还原成功,不能只看命令有没有报错
很多人删完以为搞定了,结果 composer install 还是从阿里云拉包——因为验证方式错了。
- 查配置:
composer config -g repos.packagist应该返回Key "repos.packagist" does not exist或直接空输出 - 查实际请求:
composer require monolog/monolog --no-install -vvv,观察日志里元数据下载地址——正确应含https://repo.packagist.org,不是mirrors.aliyun.com - 如果仍走镜像,大概率是当前项目
composer.json里还留着repositories字段,得手动删或用composer config --unset repositories清掉
为什么有时候 --unset 不起作用?常见干扰源
composer config --unset 只是删 JSON 字段,不是重置系统。它不管上下文,也不管你之前设的是单数还是复数写法。
- 旧项目可能残留过时写法:
repos.packagist(腾讯云/阿里云推荐写法)和repo.packagist(早期 Laravel China 写法)可能并存,得分别删:composer config -g --unset repo.packagist和composer config -g --unset repos.packagist - 某些脚手架(如老版 Laravel 安装器)自带
"repositories": {"packagist.org": false},这等于关掉了默认源,又没给替代源,结果就是找不到包——删repos.packagist没用,得删整个repositories块 - 环境变量
COMPOSER_REPO_PACKAGIST也能覆盖配置,检查是否被设置:echo $COMPOSER_REPO_PACKAGIST(Linux/macOS)或echo %COMPOSER_REPO_PACKAGIST%(Windows)
不想删配置?也可以直接切回官方源地址
如果你不确定删了会不会影响别的配置,或者想保留历史痕迹,可以直接把镜像地址改回官方源,效果等同。
- 全局改回:
composer config -g repo.packagist composer https://packagist.org - 项目级改回(进项目目录后):
composer config repo.packagist composer https://packagist.org - 改完同样要
composer clear-cache,否则缓存里的旧索引还在,请求可能仍发向镜像站 - 注意:这个操作会覆盖原有镜像地址,但不会删除其他字段(比如
github-protocols、http-basic),比--unset更“温和”
packagist.org 才是。很多人卡在缓存没清、项目级配置没查、字段名拼错这三处,反复试几次不如先 cat ~/.composer/config.json(Linux/macOS)或用记事本打开 %APPDATA%\Roaming\Composer\config.json(Windows)看一眼真实内容。










