正确命令是 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,缺一不可:必须是 repo.packagist(非 repos)、type 为 composer、URL 含 HTTPS 且末尾带斜杠。

composer config -g repo.packagist 命令写错就完全失效
国内用 Composer 不配镜像,基本装不了依赖——不是慢,是超时、403、卡在 Downloading。但 90% 的人配了也白配,因为命令漏了三个硬性细节:repo.packagist(不能是 repos.packagist)、中间必须带 composer 这个 type 值、URL 必须是 HTTPS 且末尾带斜杠。
正确写法只有一条:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
-g缺了就只改当前项目,换目录失效 -
repo.packagist多一个s或拼成packagist.org,配置静默丢弃 - URL 少斜杠(如
https://mirrors.aliyun.com/composer)会导致请求/composerpackages.json404
验证是否生效,只看这一行输出:composer config -g repo.packagist
返回 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 或纯 URL 字符串才算对;空、null、或还是 https://packagist.org,说明根本没写进去。
项目级配置比全局更可靠,尤其在 CI 和团队协作中
全局配置看着省事,但实际容易被覆盖:宝塔以 www 用户运行,你用 root 配的它读不到;Docker 容器里 -g 配置不持久;CI 脚本每次都是新环境。
立即学习“PHP免费学习笔记(深入)”;
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
进项目根目录后执行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/
(注意:不加 -g)
- 这条命令会往
composer.json的repositories字段自动追加"packagist"条目,不会清空已有私有源 - 如果项目已存在
"repositories": {},命令能安全合并;但若已是数组结构(如含自定义 Git 源),建议手动编辑,确保"packagist.org": false显式关闭官方源 - 配置随代码提交,新人拉完就能跑,CI 构建直接生效
换镜像后仍卡在 Resolving dependencies?和镜像无关
镜像只加速下载阶段(Downloading xxx.zip),不解决依赖解析卡顿。如果你看到日志长时间停在 Resolving dependencies,说明问题出在本地环境或 composer.json 写法上。
- PHP 内存不足:默认
128M不够,临时加COMPOSER_MEMORY_LIMIT=-1再试 - Xdebug 启用中:会让解析慢 5–10 倍,用
php -d xdebug.mode=off $(which composer) install临时禁用 -
"php": "^7.4 || ^8.0"这类宽泛约束,会让 Composer 尝试大量版本组合 -
composer.lock里残留已下线包,删掉vendor/和composer.lock,再composer install --no-cache
怎么确认真走镜像?必须加 -vvv 看日志里的域名
别信“命令跑完了”或“配置输出对了”,唯一靠谱的方式是亲眼看到请求发到了镜像站。
运行:composer install -vvv 2>&1 | grep "Downloading"
- 看到
GET https://mirrors.aliyun.com/composer/或类似地址 → 镜像已生效 - 看到
GET https://packagist.org/→ 全局配置被项目级repositories覆盖,或命令根本没写对 - 临时绕过所有配置验证镜像可用性:
composer create-project laravel/laravel test --repository=https://mirrors.aliyun.com/composer/ -vvv
真正容易被忽略的是:项目 composer.json 里只要定义了 repositories,就会直接屏蔽全局镜像;而 -vvv 日志是唯一能暴露这个事实的证据。


















