镜像根本没配进去,因命令写错:repo.packagist必须单数、第三个参数必须是composer(type值)、URL须HTTPS且末尾带斜杠、必须加-g;输出为空或仍为packagist.org即说明配置失败。

composer config -g repo.packagist 输出为空或仍是 packagist.org?
说明镜像根本没配进去,不是网络问题,是命令写错了。Composer 2.2+ 对键名、type、URL 格式三者都有硬性要求,漏一即静默 fallback 到官方源。
-
repo.packagist必须是单数(不是repos.packagist或repositories.packagist.org) - 第三个参数必须是
composer(这是type值,不能省略) - URL 必须以
https://开头,且末尾带斜杠:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(拼接路径会变成/composer/packages.json导致 404) - 必须加
-g(全局配置),否则只影响当前项目目录
正确命令示例:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。执行后立刻验证:composer config -g repo.packagist,输出应为完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。
composer install -vvv 日志里没出现 mirrors.aliyun.com?
说明流量没走镜像,大概率是项目级 composer.json 中的 "repositories" 字段覆盖了全局配置——它优先级最高,哪怕只是空数组 [] 也会屏蔽全局镜像。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer config repo.packagist(不加-g),看输出是否非空 - 用
grep -A 5 '"repositories"' composer.json(Linux/macOS)或直接打开文件搜索,确认是否存在该字段 - 若不需要私有源,直接删掉整个
"repositories": {...}块;临时绕过可运行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/ - CI/CD 环境中,每次容器重启都会丢掉全局配置,需显式设置
COMPOSER_HOME并在脚本开头重配
curl -I https://mirrors.aliyun.com/composer/packages.json 返回超时或 404?
这不是 Composer 的问题,是底层网络环节卡死。先手动验证镜像地址是否真通,再排查 DNS、TLS、IPv6 等环节。
-
ping mirrors.aliyun.com若返回unknown host,说明 DNS 解析失败;换 DNS(如1.1.1.1)或绑定/etc/hosts(223.5.5.5 mirrors.aliyun.com) -
curl -v https://mirrors.aliyun.com/composer/packages.json若卡在* TLS handshake,可能是 WSL2 时间不同步、公司中间件拦截、或证书链不全;同步时间或配置cafile - CI 环境默认启用 IPv6 但国内镜像站支持不完整,加环境变量
COMPOSER_IPV4=1强制走 IPv4 - 清华源地址应为
https://mirrors.tuna.tsinghua.edu.cn/composer/,腾讯云推荐用https://packagist.proxy.tencent.com/(mirrors.cloud.tencent.com已不维护)
清了缓存还是报 Failed to extract 或 Invalid argument supplied for foreach()?
Composer 没有断点续传能力,下载中断后残留的损坏 ZIP 或截断的 installed.json 会让后续所有操作反复失败,不是重试能解决的。
- 必须先清缓存:
composer clear-cache - 再手动删掉本地仓库缓存目录:
rm -rf ~/.composer/cache/repo/https---packagist.org/(Linux/macOS)或%APPDATA%\Composer\Cache\repo\https---packagist.org\(Windows) - 如果
vendor/composer/installed.json被截断为空,会导致foreach()报错;此时删掉整个vendor/目录再重装更稳妥 -
http.timeout控制单次 HTTP 请求耗时(适用于cURL error 28),建议设为600;process-timeout控制整个命令生命周期(适用于卡在 autoload 阶段),建议设为1200;超过7200秒会被 Composer 硬编码忽略
镜像配置本身很简单,真正耗时间的是缓存残留、项目级配置覆盖、以及 DNS/TLS 这类底层网络细节——它们不会报明确错误,只会让日志停在某一行不动。动手前先跑 composer config -g -l 和 composer config -l 对比,比反复重试快得多。

















