composer全局镜像配置失败主因是repo.packagist拼写错误、url缺https/结尾斜杠、未加-g参数,或被项目级repositories字段完全屏蔽;验证需用composer install -vvv看实际请求url,并清理缓存和composer.lock。

composer config -g repo.packagist 输出为空或不是 JSON 对象
说明配置根本没写进去,不是“没生效”,是压根没存成功。Composer 2.x 会静默回退到 https://packagist.org,不报错也不提醒。
-
repo.packagist必须是单数,写成repos.packagist或repositories.packagist都无效 - 命令末尾必须带
composer作为type值:正确写法是composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须 HTTPS 且以
/结尾:https://mirrors.aliyun.com/composer(缺斜杠)会导致拼出/composerpackages.json这种非法路径 - 必须加
-g,否则只改当前项目composer.json,换目录就失效
项目级 repositories 字段让全局镜像完全失效
只要项目根目录 composer.json 里存在 "repositories" 字段(哪怕只是 "repositories": []),全局配置就彻底被跳过——不是优先级低,是直接忽略。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时验证是否被覆盖:运行
composer config --unset repositories(注意没-g)清掉项目级配置再试 - 宝塔/CI/Docker 环境中更常见:你用
root配的全局镜像,但实际运行的是www用户,得用sudo -u www composer config -g单独配 - 推荐做法:进项目根目录,运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g),它会自动合并到composer.json的repositories字段中,key固定为"packagist"
composer install -vvv 显示的 URL 才是真实请求地址
卡在 Loading composer repositories 或 Downloading 时,别只看 composer config 输出;第一行日志里的 URL 才是 Composer 实际发请求的地址。
- 运行
composer install -vvv 2>&1 | head -n 10 | grep Downloading,看第一行是不是你配的镜像域名 - 如果不是,说明要么被项目级配置屏蔽,要么 fallback 到了官方源,或者镜像 URL 拼错了(比如少斜杠、协议写错)
- 某些错误如
file_put_contents(): Only variables should be passed by reference其实是镜像返回了乱码或 BOM 头,不是 PHP 语法问题,换阿里云/腾讯云源即可
缓存残留和 lock 文件硬编码旧地址
换源后仍报 404、SSL error 或 JSON decode error,不是网络不通,而是缓存或 composer.lock 里还存着旧 provider 地址。
- 先执行
composer clear-cache;Windows 用户还得手动删%LOCALAPPDATA%\Composer\cache - 删掉
vendor/和composer.lock——composer.lock里硬编码了旧源路径,不删它,Composer 就一直重试失败路径 - 手动验证镜像可用性:
curl -I https://mirrors.aliyun.com/composer/packages.json必须返回HTTP/2 200;若返回 HTML 页面(如人机验证),说明该镜像不适合自动化场景
-g,Composer 就安静退回官方源,连 warning 都不给——它不报错,才是最危险的。










