全局配置镜像后composer install仍慢,主因是未清缓存、配置拼写错误(如repo.packagist少s)、url末尾缺斜杠或使用已停用源;必须执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/并composer clear-cache,再通过composer install -vvv确认日志中出现mirrors.aliyun.com路径才真正生效。

为什么全局配置镜像后 composer install 还是慢?
因为 Composer 默认只对 packagist.org 生效,而很多 PHP 扩展(比如 ext-redis、ext-swoole)的源信息来自 https://packagist.org,但实际下载 ZIP 或 TAR 包时,仍可能走原始 GitHub/GitLab 仓库地址——这些没被镜像覆盖。
真正起效的是把包元数据(metadata)和下载链接(dist URLs)都重定向到国内镜像源。关键不是“换源”,而是让 Composer 把 dist.url 也替换成镜像地址。
- 确认是否已启用镜像:运行
composer config -g repo.packagist,应返回类似{"type": "composer", "url": "https://packagist.phpcomposer.com"}的结构 - 旧镜像(如 phpcomposer.com)已停用,必须改用
https://packagist.laravel-china.com或https://mirrors.aliyun.com/composer/ - 某些私有包或
repositories配置会绕过全局镜像,需单独加dist-url重写
如何让 ext-xxx 类扩展真正从镜像下载?
Composer 本身不编译扩展,它只是下载源码包并调用 phpize && ./configure && make install。但下载环节卡住,就出不来 .so 文件。核心是确保 dist 包 URL 被替换。
阿里云镜像支持自动重写 dist URL,但需显式启用:composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/,然后加一行强制重写:
composer config -g extra.installer-paths {"vendor/phpunit/phpunit": "phpunit"} --unset
composer config -g extra.enable-dist-url-rewrite true
注意:enable-dist-url-rewrite 不是官方字段,而是阿里云镜像客户端插件(aliyuncs/composer-mirror-plugin)提供的功能,必须先安装该插件:
- 运行
composer global require aliyuncs/composer-mirror-plugin - 再执行
composer config -g extra.enable-dist-url-rewrite true - 验证:运行
composer show monolog/monolog | grep dist,看到 URL 是https://mirrors.aliyun.com/composer/dists/...才算生效
composer create-project 仍连外网?检查项目级配置
全局镜像不影响项目根目录下的 composer.json 里写的 repositories 字段。如果项目自己定义了 "packagist.org": false 或手动加了其他源,就会跳过全局设置。
解决方法不是删掉项目配置,而是用 composer config 在项目内覆盖:
- 进入项目目录,运行
composer config repositories.packagist composer https://mirrors.aliyun.com/composer/ - 若已有自定义
repositories,需保留它们,并把 packagist 条目放在最前(Composer 按顺序匹配) - 避免在
composer.json中写死"url": "https://packagist.org"—— 改成变量引用或直接删掉,交由全局控制
一个常见陷阱:CI 环境中未执行 composer config -g,导致每次都是干净环境,必须在构建脚本开头加上镜像配置命令。
镜像失效或 404 怎么办?备用方案和诊断命令
镜像不是永久可用的,阿里云、腾讯云、华为云都可能临时维护或调整路径。遇到 Could not fetch https://mirrors.xxx.com/composer/... 404,别急着换源,先定位问题层级。
- 用
curl -I https://mirrors.aliyun.com/composer/packages.json直接测镜像站连通性 - 查看真实请求 URL:加
-vvv参数运行composer install -vvv,找到失败的GET请求地址 - 临时切回官方源调试:
composer config -g repo.packagist https://packagist.org,确认是不是镜像本身问题 - 当前推荐优先级:阿里云 > 腾讯云(
https://mirrors.cloud.tencent.com/composer/)> 华为云(需登录开通)
最易被忽略的一点:PHP 的 openssl.cafile 配置错误会导致 HTTPS 请求失败,表现为超时或 SSL handshake failed,跟镜像无关,但症状相似。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











