最直接方式是用 composer config 修改镜像:全局执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,项目级去掉 -g;注意 key 固定、URL 末尾不加 /packages.json,并确保 composer.lock 和缓存已清理。

怎么用 composer config 临时换源
改镜像地址最直接的方式就是改全局或当前项目的配置,composer config 是唯一推荐的修改入口。它会写入 composer.json 的 repositories 字段(项目级)或 ~/.composer/config.json(全局),不碰系统文件,也不依赖环境变量。
常见错误是手动编辑 composer.json 然后加一堆 packagist.org 的变体,结果 Composer 启动时直接报 Invalid repository type —— 因为没写 type: "composer"。
- 切换到阿里云镜像(全局):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 切回官方源(全局):
composer config -g --unset repos.packagist - 只对当前项目生效:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(去掉-g)
注意:repo.packagist 是固定 key,不是随便起的;https://mirrors.aliyun.com/composer/ 结尾不能带 /packages.json,否则请求会 404。
为什么 composer global require 不走镜像
全局命令本身不触发包安装逻辑,但 composer global require xxx 会读取全局的 composer.json(位于 ~/.composer/composer.json),而它的镜像配置必须单独设 —— 全局 config(config.json)和全局项目(composer.json)是两套配置。
现象:你明明 config -g 过了,global require larastan/larastan 却卡在 Downloading https://packagist.org/packages.json。
- 解决方法:进
~/.composer目录,执行composer config repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer global show -s会列出当前全局项目的仓库配置 - 别用
--no-plugins或COMPOSER_HOME指向错路径,会导致配置加载错位
composer install 还是连不上镜像?检查这三处
即使配置写了,install 仍走官方源,大概率是配置被覆盖、缓存未清或网络策略干扰。
- 运行
composer config -l | grep repo,确认输出里有repos.packagist.type和repos.packagist.url,且值是你设的阿里云地址 - 删掉
vendor/和composer.lock,再composer install——lock文件里硬编码了包下载地址,旧 lock 会绕过镜像 - 某些公司内网禁了非 443 域名,而阿里云镜像域名
mirrors.aliyun.com是通的,但如果你误配成https://php.cnpkg.org(已停服)或拼错成aliyuncs.com,就会超时
顺手加个检测命令:curl -I https://mirrors.aliyun.com/composer/packages.json,返回 200 才算镜像服务可用。
PHP 版本和 Composer 版本对镜像的影响
镜像地址本身没版本要求,但低版本 Composer(如 1.x)不支持 HTTPS 强制重定向,如果镜像站启用了 HSTS 或跳转,就可能卡住;PHP 7.2 以下则可能因 TLS 握手失败连不上 HTTPS 镜像。
- Composer 2.0+ 默认启用
secure-http,若你用 HTTP 镜像(如早期腾讯云 http://mirrors.tencentyun.com/composer/),会直接报错:The 'http://' URL '<code>http://mirrors.tencentyun.com/composer/' is not allowed - 升级建议:
composer self-update;如果卡在旧版本,先php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"再重装 - PHP 低于 7.2 且无法升级?只能换支持 HTTP 的镜像(如已归档的华为云 HTTP 源),但不推荐 —— 安全风险比慢更严重
真正容易被忽略的是:有些 CI 环境(如 GitHub Actions 的 setup-php)默认装的是 Composer 2.x + PHP 8.x,但本地开发用 PHP 7.4 + Composer 1.10,两套配置不同步,一提交就崩。










