全局配置必须严格使用 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,拼写、大小写、协议、结尾斜杠任一错误均导致静默失效;项目级配置更可靠,需确保 repositories 为对象格式;切换后须执行 composer clear-cache 和 composer update --lock 刷新锁文件。

全局配置写错 key 就等于没配
Composer 2.x 硬编码只认 repo.packagist(单数、全小写、无 s),写成 repos.packagist 或 packagist.org 都会静默存进无效字段,composer config -g repo.packagist 查出来是空或 null,install/update 仍走官方源。
必须严格用这个命令:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
-g:缺了就只改当前项目,换目录失效 -
repo.packagist:拼错大小写、多加 s、少repo.前缀都不行 -
composer:这是type值,不是注释;漏掉就 fallback 到https://packagist.org - URL 必须以
https://开头且末尾带/,否则请求路径拼成/composerpackages.json直接 404
项目级配置更适合团队和 CI
全局配置在宝塔、GitHub Actions、Docker 环境里容易因用户权限错位(比如 www 用户 vs root)或被覆盖,项目级配置写进 composer.json 更可控,还能 Git 跟踪。
进项目根目录,运行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意不加 -g)
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 它会安全合并到
composer.json的repositories字段,前提是原字段是对象(如"repositories": { "packagist": {} }),不是数组 - 如果
composer.json里已有"repositories": []或"repositories": [{}],命令会失败,需先手动改成对象格式 - 已有
"packagist.org": false这类禁用项,得先删掉再执行,否则 install 会直接报Could not find package
切完镜像 vendor 还慢?锁文件没刷新
镜像配置成功 ≠ 下载立刻走新地址。因为 composer.lock 里硬编码的 dist.url 仍指向原始源,Composer 会先尝试旧地址,超时后才 fallback——这不是配置失败,而是缓存和 lock 文件滞后。
- 执行
composer clear-cache清掉旧元数据缓存 - 再运行
composer update --lock强制刷新 lock 文件中的下载链接 - 更彻底的做法:删掉
vendor/和composer.lock,重新composer install -vvv,观察日志里所有Downloading行是否含mirrors.aliyun.com
不同镜像 URL 格式差异大,别硬套域名
阿里云、腾讯云、华为云路径结构完全不同,不能简单替换域名。清华旧地址已下线,中科大同步略慢,日常优先选阿里云或腾讯云。
- 阿里云:
https://mirrors.aliyun.com/composer/ - 腾讯云:
https://mirrors.cloud.tencent.com/composer/ - 华为云:
https://mirrors.huaweicloud.com/repository/php/(注意含/repository/php/) - 别加
/packages.json后缀——那是 Composer 自己拼的;也别用http://,Composer 2.x 默认禁用非 HTTPS 源
最易被忽略的是 --lock 刷新和 clear-cache 组合操作:只切镜像不更新 lock,依赖还是从旧地址拉;只清缓存不刷新 lock,新镜像也用不上。

















