直接换阿里云镜像源可大幅提升 composer 下载速度,全局配置命令为 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,验证用 composer config -l | grep "repos.packagist",注意字段名应为 repos.packagist(composer 2.x+)。

直接换阿里云镜像,5 秒搞定,下载速度从“等泡面”变成“秒装完”。
全局配置国内镜像源(推荐新手)
绝大多数人卡在 composer install 卡住或超时,本质是默认连 packagist.org(境外服务器),DNS 解析慢 + 连接不稳定。全局改一次,所有新老项目自动生效,不用每个项目重复操作。
- 运行命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -l | grep "repos.packagist",输出应含https://mirrors.aliyun.com/composer/ - 别用 Laravel China 镜像(
packagist.laravel-china.org)——它已于 2025 年底停止同步,部分新包会 404 - 腾讯云镜像(
https://mirrors.cloud.tencent.com/composer/)可用,但阿里云同步延迟更短、CDN 节点更多,优先选它
单个项目临时切镜像(适合 CI/内网/多源混用)
有些项目依赖私有包或测试不同源行为,不能动全局配置;或者你在公司内网,想先试跑再决定是否全局切换。
- 进项目根目录,执行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/ - 这条命令会往
composer.json里写入"repositories": { "packagist": { "type": "composer", "url": "..." } },仅当前项目读取 - 注意:如果项目已有自定义
repositories数组(比如加了私有 GitLab 源),别直接覆盖,要用composer config repositories.my-private type git这类方式追加 - 删掉它只需:
composer config --unset repositories.packagist(不是--unset repos.packagist,字段名要对)
换源后 composer update 还很慢?可能是缓存没清
Composer 会把包元数据(packages.json)和 ZIP 包缓存在本地,镜像换了但旧缓存还在,它可能仍尝试从旧地址拉取索引,导致卡在 “Loading composer repositories…”。
- 先清缓存:
composer clear-cache(显示 “Cache directory does not exist” 也不用慌,说明已空) - 再删锁文件:
rm composer.lock(可选,如果只是想重走一遍依赖解析) - 最后重装:
composer install或composer update --no-scripts(跳过 post-install 脚本,更快验证网络通不通) - 如果还慢,加
-vvv看真实请求地址:composer install -vvv 2>&1 | grep "GET ",确认 URL 是阿里云域名而非 packagist.org
内网离线环境怎么用 Composer?(不是“换镜像”,是彻底断网)
真断网时,repo.packagist 配置无效——它只是换了个 HTTP 地址,仍需联网请求。必须用静态镜像方案,核心是 Satis 工具生成可托管的纯静态仓库。
- 在外网机器上跑:
php bin/satis build satis.json web/,生成含packages.json和 ZIP 包的完整目录 - 把整个
web/目录扔进内网 Nginx,确保能通过http://192.168.10.100/packages.json访问到 - 内网机器执行:
composer config -g repos.packagist '{"type":"composer","url":"http://192.168.10.100"}'(注意是单引号包裹 JSON 字符串) - 关键细节:Satis 的
satis.json必须显式列出所需包("require": { "monolog/monolog": "^2.0" }),不能只写"require-all": true,否则生成物过大且易失败
最容易被忽略的一点:换源命令里的 repo.packagist 和 repos.packagist 看似差不多,但前者是旧版写法(Composer 1.x 兼容),后者才是当前稳定版(2.x+)唯一认的字段名;用错会导致配置不生效却无报错。










