当前是否使用阿里云镜像需运行 composer config -g repo.packagist:若返回 {"type": "composer", "url": "https://packagist.phpcomposer.com"} 或为空,则未切换成功;正确地址为 https://mirrors.aliyun.com/composer/,且需确认修改的是全局而非项目级配置。

怎么确认当前用的是不是阿里云镜像
直接看 composer config -g repo.packagist 输出。如果返回的是 {"type": "composer", "url": "https://packagist.phpcomposer.com"} 或空,说明没切成功;阿里云官方镜像地址是 https://mirrors.aliyun.com/composer/,不是 phpcomposer(那个已停服)。很多人改完没生效,其实是输错了 URL,或者改到了项目级而非全局。
- 用
composer config -g repo.packagist查当前全局配置 - 项目级配置优先级更高,会覆盖全局,执行前先
cd到项目根目录确认是否在项目里误操作 - 旧版 Composer(repo.packagist 这种写法,得用
composer config -g repos.packagist
怎么安全切换到阿里云镜像(兼容 Composer 1.x 和 2.x)
一行命令搞定,但必须分清版本。Composer 2.0+ 推荐用新语法,更稳定;1.x 用老语法,否则报错 [InvalidArgumentException] Setting repos.packagist does not exist。
- Composer 2.0+:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - Composer 1.x:
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/ - 切完立刻验证:
composer show -p | head -n 3,看第一行是否含mirrors.aliyun.com - 如果提示
Could not fetch,可能是 DNS 污染或本地 hosts 被动过,试试加--verbose看真实请求地址
为什么换了镜像还是慢?常见卡点在哪
镜像只加速 packagist 元数据和 zip 包下载,不加速 GitHub/GitLab 原始仓库克隆、git clone、dist fallback 或私有包源。很多“慢”其实跟镜像无关。
- 执行
composer install卡在Cloning xxx:这是在走 git 协议,镜像无效,需配composer config -g github-protocols https - 看到
Downloading https://api.github.com/...:说明某些包没提供 dist,强制走 source,可尝试composer install --prefer-dist - 公司内网或代理环境,
https://mirrors.aliyun.com可能被拦截,换http://mirrors.aliyun.com(不推荐长期用,但临时排障有效) - PHP curl 扩展没开 HTTP/2 支持,小文件多时延迟明显,升级 PHP 8.1+ + curl 7.62+ 有改善
怎么让 CI/CD 环境也用上阿里云镜像
CI 脚本里不能依赖本地全局配置,每次都要显式设置,否则默认回退到 packagist.org。Docker 构建尤其容易漏这步。
- GitHub Actions 示例:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/放在run步骤最前面 - Dockerfile 中避免
RUN composer install单独执行,应合并为:RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && composer install --no-dev --optimize-autoloader - GitLab CI 注意缓存路径,
~/.composer缓存后,首次运行仍可能因缓存未命中而走默认源,建议加before_script强制重置
dist.url 写死 GitHub,或者 lock 文件里记了旧源地址,这时候光换镜像没用,得配合 --prefer-dist、清理 vendor 和 lock、甚至临时 patch composer.json。










