正确命令是 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,键名必须为 repo.packagist、type 参数不可省略、url 须以 https:// 开头且结尾带 /,三者缺一即静默失效。

composer config -g repo.packagist 命令必须严格写对
配错键名、漏掉 composer 类型参数、URL 缺末尾斜杠,三者任一出错都会静默失效——命令不报错,但 composer install 依然直连 packagist.org。
正确写法只有一条:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
repo.packagist是唯一合法键名(不是repos.packagist、repository.packagist或packagist.org) - 第二个参数
composer是 type 值,不能省略 - URL 必须以
https://开头,且末尾带/,少一个就可能触发Could not parse version constraint
验证镜像是否真生效,别信“我执行过了”
运行 composer config -g repo.packagist,输出必须是完整 JSON:
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
如果输出为空、null、https://packagist.org 或报错,说明没生效。常见原因包括:
- 权限问题:在 root 或管理员终端下执行,但当前用户非 root,配置写入失败
- Composer 版本太低:低于 2.0 不支持该语法,先升级:
composer self-update - 被项目级配置覆盖:进项目目录后执行
composer config repos.packagist,有输出即说明项目里写了"repositories"字段,会屏蔽全局设置
composer create-project 还是卡?它分两步,镜像只管后半段
composer create-project laravel/laravel demo 实际做两件事:先从 GitHub 克隆骨架(走 GitHub API),再进目录执行 composer install(这时才走你配的镜像)。第一步卡住,和镜像无关。
- 如果卡在
Cloning Laravel repository,大概率是 GitHub API 限流,需配 token:composer config -g github-oauth.github.com your_token_here - 想让整个流程都走镜像,加
--repository参数:composer create-project laravel/laravel demo --repository=https://mirrors.aliyun.com/composer/ -
--repository-url和--mirror是无效参数,Composer 不识别,会静默忽略
只换源不够,缓存路径也得配齐
镜像源解决元数据拉取慢,缓存解决 ZIP 包重复下载。二者缺一不可——只换源不配缓存,第二次 install 仍可能慢;只开缓存不换源,缓存根本拉不到包。
- 检查缓存路径是否启用:
composer config -g cache-files-dir,输出应为非空路径(如/home/user/.composer/cache/files) - 若为空,手动设:
composer config -g cache-files-dir ~/.composer/cache/files - 建议设缓存有效期:
composer config -g cache-files-ttl 3600(1 小时),避免因包更新导致旧缓存误用 - CI/CD 中务必同时缓存
~/.composer/cache和vendor/,且保证composer.lock与 PHP 版本严格一致
repo.packagist 键名拼写、URL 末尾斜杠、缓存路径非空这三点,90% 的人第一次都没全对。











