composer diag 默认只测 https://packagist.org,不验证镜像可用性;真正验证需用 composer config -g repos.packagist.url 获取实际镜像地址,再通过 curl -i 测试 packages.json 返回 200,并手动清理 provider 缓存目录而非仅执行 clear-cache。

composer diag 不测镜像,别被它误导
运行 composer diag 看到 “Connection to https://packagist.org failed” 并不说明你的阿里云/腾讯镜像坏了——这个命令**默认只连官方源**,完全无视你配置的 repos.packagist。它只是检查本地 PHP 环境(OpenSSL、curl、时间等)是否具备基础联网能力,不是镜像可用性测试工具。
真正要验证镜像是否同步及时,得绕过 diag,直接模拟 Composer 实际行为:
- 先确认当前生效的镜像地址:
composer config -g repos.packagist.url(注意是复数repos,单数repo无效) - 手动请求该镜像的元数据接口:
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回HTTP/2 200才算通 - 再查具体包是否已同步:
curl -I https://mirrors.aliyun.com/composer/p/vendor/package-name.json,看状态码和Last-Modified时间戳是否接近当前时间
composer show 查不到包?先清 provider 缓存,不是 clear-cache
composer clear-cache 只删 ZIP 包和 dist 缓存,对元数据(packages.json、provider-*.json)几乎没用。镜像同步延迟导致 composer show vendor/package 报 “no matching package found”,本质是 Composer 还在读本地缓存的旧索引。
唯一有效做法是手动清理 provider 元数据缓存目录:
- 找到对应镜像的缓存路径:
ls -d ~/.composer/cache/repo/https---mirrors.aliyun.com-composer(URL 中的/被转义为---) - 直接删掉:
rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com-composer - 再执行
composer show vendor/package,Composer 会强制重拉最新packages.json和p/vendor/package.json
注意:Windows 用户路径类似 %APPDATA%\Composer\cache\repo\https---mirrors.aliyun.com-composer,别用 clear-cache 白忙活。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目级 repositories 配置会静默屏蔽全局镜像
你在终端执行了 composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/,但进项目一跑 composer require,日志里还是出现 Downloading https://packagist.org/...——大概率是项目根目录的 composer.json 里写了 "repositories" 字段。
只要 composer.json 含 "repositories"(哪怕空数组),Composer 就会彻底忽略全局镜像配置,按项目里写的源去拉取。常见陷阱:
- 模板里残留已停服的旧镜像:
"url": "https://packagist.phpcomposer.com"(2022 年起固定 404) - 漏写末尾斜杠:
"url": "https://mirrors.tuna.tsinghua.edu.cn/composer"→ 正确应为.../composer/ - 没关 packagist 官方源:
"packagist": false没配,导致新包仍尝试走官方源 fallback
检查方式:composer config repositories(不加 -g),有输出就说明项目自己管源。
临时切官方源验证,但别用 config -g 改全局
想快速确认是不是镜像问题,最稳妥的方式是**仅对当前命令生效**,避免污染全局或项目配置:
- 临时走官方源:
COMPOSER_REPO_PACKAGIST=https://packagist.org composer show vendor/package - 临时走指定镜像:
COMPOSER_REPO_PACKAGIST=https://mirrors.cloud.tencent.com/composer/ composer show vendor/package - 配合
-vvv观察真实请求域名:composer require vendor/package -vvv 2>&1 | grep "GET "
如果官方源能查到而镜像查不到,基本锁定同步延迟;如果官方源也失败,再排查包名拼写、网络代理或 TLS 握手(比如 curl error 35 或系统时间偏差)。镜像同步本身是服务端行为,客户端唯一能做的就是清缓存、换源、等几分钟——别试图“强制触发同步”。










