全局配置需执行“composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/”,三要素缺一不可:键名必须为repo.packagist、type值必须为composer、URL须HTTPS且结尾带/;项目级配置去掉-g写入composer.json;create-project需显式加--repository-url;生效后需验证输出及网络请求。

全局配置命令必须带 -g 和完整三要素
想让所有项目都走国内镜像,只有一条命令真正可靠:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。它写入的是当前用户的 ~/.composer/config.json,Composer 启动时自动读取。
这条命令里三个点不能错:
-
repo.packagist是键名,拼成repos.packagist(多一个 s)或packagist.org就静默失效 -
composer是 type 值,不是可选参数,漏掉会导致 fallback 到官方源 - URL 必须是 HTTPS 且末尾带
/,https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌
项目级配置不依赖用户身份,适合 CI 和团队协作
在项目根目录下运行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/(去掉 -g)。它会把镜像地址安全写进当前项目的 composer.json 的 repositories 字段,不覆盖已有配置。
这种写法绕过了用户权限问题,特别适合:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 宝塔后台以
www用户运行,但你本地是普通用户 - GitHub Actions、GitLab CI 等流水线环境,默认不读全局配置
- 多人协作时避免因全局配置不一致引发依赖差异
create-project 不读全局镜像,得显式加 --repository-url
composer create-project laravel/laravel myapp 这类命令会绕过 repo.packagist 配置,直接访问 packagist.org 下载 skeleton 包——所以即使全局配了镜像,它依然慢。
正确做法是显式指定:
composer create-project laravel/laravel myapp --repository-url=https://mirrors.aliyun.com/composer/- 如果用
laravel/installer,也建议加--repository-url参数,否则它内部调用的仍是默认源
验证是否生效,别信“执行完就 OK”
执行完配置命令后,必须验证,最直接的方式是:
- 运行
composer config -g repo.packagist,输出必须是{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}或至少是完整 URL 字符串;空、null、或仍是https://packagist.org都说明没生效 - 运行
composer diagnose,看Repo.packagist.org行是否显示你的镜像域名 - 临时跑一次
composer install --no-cache,用curl -v或抓包确认请求发往mirrors.aliyun.com
最容易被忽略的是:不同用户(root vs www vs runner)的配置互不共享,CI 或面板环境里切镜像,必须切到对应用户下执行命令。

















