正确命令是composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/,需满足键名准确、显式声明type、url末尾带斜杠,并执行clear-cache验证生效。

Laravel 项目用 Composer 下载依赖超时,大概率不是 Laravel 本身的问题,而是默认走 packagist.org(境外源)导致元数据拉取慢或失败。换用腾讯云镜像源能显著改善——但关键不在“换”,而在“换对”。
全局配置腾讯云镜像的正确命令
执行这一条即可生效:
- composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
注意三个硬性要求:
- 键名必须是 repo.packagist(不是 repos.packagist、repository.packagist 或 packagist.org)
- composer 是 type 值,必须显式写出,不能省略
- URL 末尾的 / 必须保留,缺了部分 Composer 版本会返回 404 或报错 “Invalid repository type”
配完必须验证是否真生效
别只看命令没报错,要确认 Composer 实际请求发到了哪:
- 先清缓存:composer clear-cache(否则仍用旧索引,镜像等于白配)
- 查配置是否写入:composer config -g repo.packagist,应输出完整 JSON:
{"type":"composer","url":"https://mirrors.cloud.tencent.com/composer/"} - 看实际行为:composer show laravel/framework 11.* --no-ansi | head -n 5,输出中需出现 mirrors.cloud.tencent.com;或加 -vvv 观察请求 URL
- 若 composer diagnose 显示 Repo packagist.org is default,说明镜像完全未加载,优先检查键名和项目级覆盖
为什么设了还是超时?重点排查这三处
镜像本身稳定,问题多出在本地环境:
- 项目级配置覆盖全局:进项目根目录运行 composer config repos.packagist,有输出即被覆盖(如 composer.json 里写了 "repositories" 字段)
-
DNS 或网络不通:执行 ping mirrors.cloud.tencent.com,不通就换阿里云源(
https://mirrors.aliyun.com/composer/)或试直连 IP -
代理或缓存干扰:检查
$http_proxy环境变量,必要时执行 composer config -g --unset http-proxy
临时用、CI 用、或绕过所有配置
不想改全局,或需要干净验证:
- 单次命令指定源:composer install -r https://mirrors.cloud.tencent.com/composer/
- 但 composer create-project 不支持 -r,可改用:
composer create-project laravel/laravel demo --repository=https://mirrors.cloud.tencent.com/composer/ - 彻底忽略所有已配仓库(含项目级):composer update --repository-url=https://mirrors.cloud.tencent.com/composer/
注意:腾讯云镜像只加速元数据读取和依赖解析(p2/索引),ZIP 包仍从 GitHub/GitLab 直链下载。如果卡在 “Downloading xxx.zip”,需另查 GitHub 访问状况或本地网络出口限制。











