Composer下载失败90%非网络问题,而是镜像未生效:Composer 2.2+已弃用repo.packagist,须用repositories.packagist.org键名并严格满足JSON格式、URL末尾带/、加-g参数;同时必须清缓存、删vendor和composer.lock,否则仍走原始地址。

composer 下载失败,90% 不是网络问题,而是根本没走镜像——命令写错、缓存没清、composer.lock 里还存着原始地址,三者任一存在,都会卡在 Loading composer repositories 或报 Could not fetch。
为什么 composer config -g repo.packagist 总不生效
Composer 2.2+ 已弃用 repo.packagist,写它等于白配。必须用 repositories.packagist.org 这个键名,且严格满足以下条件:
-
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}'—— 必须带双引号包裹 JSON,漏引号或单引号会静默失败 - URL 末尾必须有
/,https://mirrors.aliyun.com/composer❌(拼路径成/composerpackages.json直接 404) - 必须加
-g,否则只改当前项目composer.json,换目录就失效 - 执行后立刻验证:
composer config -g repositories.packagist.org输出应为完整 JSON,空或报错说明没写入
换源后还是慢?先清缓存再重装
旧缓存里的元数据仍指向 packagist.org,哪怕镜像已生效,composer install 也会先尝试旧地址。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须执行:
composer clear-cache - 删掉
vendor/和composer.lock - 再跑:
composer install -vvv,观察日志中下载 URL 是否含mirrors.aliyun.com - 若不想删
composer.lock,可用:composer update --lock强制刷新 lock 文件中的 dist URL
临时切换镜像(适合 CI 或单次安装)
不用改配置,命令行直接指定,--repository 会完全忽略全局和项目级设置:
- 阿里云:
composer create-project laravel/laravel demo --repository=https://mirrors.aliyun.com/composer/ - 腾讯云:
composer install --repository=https://mirrors.cloud.tencent.com/composer/ - 注意:镜像未同步新包时会报
Could not find package,属正常现象,等 5–10 分钟再试 - 加
-vvv可确认真实请求 URL,避免“好像快了”这种误判
项目级配置比全局更可靠
CI 流水线、宝塔面板、多项目混用时,全局配置极易因用户权限或环境差异失效,导致 composer.lock hash 不一致。
- 进项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g) - 它会安全合并进
composer.json的repositories字段,不覆盖已有私有源 - 前提:原
"repositories"是对象(如{"packagist": {}}),不是数组;若是数组,命令会失败,需先手动转格式 - 已有
"packagist": false?得先删掉该字段,否则基础包都拉不到
composer.lock 里固化了原始 dist URL,哪怕镜像全配对、缓存全清空,它仍会优先尝试旧地址——必须删锁文件或强制更新锁。

















