直接执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/即可全局生效,url末尾斜杠不可省略,键名必须为repo.packagist且type值为composer,否则静默失效。

直接执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 就能全局生效,不需要改文件、不用重启终端、也不依赖环境变量——这是目前最稳定且兼容 Composer 2.x / 3.x 的方式。
全局切换:一行命令写入用户级配置
Composer 全局镜像配置只认 ~/.composer/config.json 这个路径,composer config -g 是唯一推荐的写入方式。手动编辑该文件容易格式出错,而用命令写入会自动处理 JSON 结构和字段嵌套。
-
repo.packagist是固定键名,拼成repos.packagist或packagist.org都无效 - URL 必须以
https://开头,且末尾带斜杠/,少一个都会导致 404 或解析失败 - 别加
/packages.json或/dist后缀,阿里云镜像服务本身已路由所有子路径 - Windows 用户若提示 Permission denied,不是权限问题,而是杀毒软件或 OneDrive 锁了
config.json,临时退出相关进程再试
项目级切换:只影响当前目录,适合 CI 或多源协作
进到项目根目录后,去掉 -g 参数运行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/。它会往 composer.json 的 repositories 字段里写入配置,优先级高于全局设置。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 如果项目已有
"repositories": {...},这条命令会**完全覆盖**整个字段,不是合并——想保留私有仓库就得手动编辑 - 某些 Laravel 脚手架模板自带
"repositories": {"packagist.org": false},本质是禁用默认源但没指定替代源,结果就是Could not find package - 删掉
repositories字段后,必须补一句composer clear-cache,否则旧缓存仍可能触发 packagist.org 请求
验证是否真在用阿里镜像
别靠“好像快了”判断,要查实际生效的配置和网络请求。
- 运行
composer config -g repo.packagist,输出应为{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 运行
composer diagnose,看 “Repo” 行是否显示阿里云地址;若仍是https://packagist.org,说明被项目级repositories覆盖了 - 跑一次
composer update -vvv,观察日志里Downloading的域名是不是mirrors.aliyun.com—— 这才是最终确认 - 如果日志里还出现
github.com或packagist.org,大概率是composer.lock里硬编码了原始 dist 地址,得跑composer update --lock刷新
换源后依然慢或失败?先排查这三件事
镜像只代理元数据(packages.json),不托管 ZIP 包本身。很多“慢”和“卡住”跟镜像无关。
-
composer.lock没刷新:旧 lock 文件记录的是官方源的 dist URL,即使镜像生效也照连 packagist.org,必须composer update --lock - PHP 缺失
openssl或curl扩展:表现为 HTTPS 请求超时,实则是 TLS 握手失败,检查php -m | grep openssl - 某些包启用了
source模式(比如从 GitHub clone):镜像只代理dist(ZIP),source仍直连 GitHub,这类包无法通过换源加速
真正容易被忽略的是:镜像切换后,composer global require 不会自动继承全局配置,因为它读的是 ~/.composer/composer.json,得单独进那个目录再跑一遍 composer config 命令。










