答案是元数据缓存过期或镜像同步延迟——需用curl验证last-modified时间,手动删除~/.composer/cache/repo/下对应元数据缓存目录,并通过composer diagnose确认实际生效源,而非仅执行composer clear-cache。

composer show 查不到包,但 Packagist 页面明明有
这不是网络不通,也不是包不存在,而是你本地看到的“可用版本列表”是过期的镜像元数据。国内主流镜像(如阿里云、腾讯云)对 Packagist 的 packages.json 和 p/vendor/package-name.json 同步通常有 5–30 分钟延迟,冷门包甚至数小时。
验证是否同步到位,别猜,直接用 curl:
-
curl -I https://mirrors.aliyun.com/composer/p/monolog/monolog.json—— 看Last-Modified时间是否接近当前时间;状态码必须是HTTP/2 200 -
curl -s https://mirrors.aliyun.com/composer/packages.json | jq -r '.lastModified'对比官方源:curl -s https://packagist.org/packages.json | jq -r '.lastModified' - 运行
composer diagnose,找到Repo packagist.org:这一行,确认后面显示的是你配的镜像地址(注意结尾斜杠),不是https://packagist.org/
执行 composer clear-cache 没用,到底该清什么
composer clear-cache 只删 ZIP 包和 dist 缓存,对元数据(packages.json、provider-*.json)几乎无效。真正卡住你的,是本地缓存的旧索引。
必须手动清理 provider 元数据缓存目录:
- 先查路径:
ls -d ~/.composer/cache/repo/https---mirrors.aliyun.com-composer(URL 中的/被转义为---) - 再删掉:
rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com-composer - Windows 用户路径类似:
%APPDATA%\Composer\cache\repo\https---mirrors.aliyun.com-composer - 删完立刻跑
composer show monolog/monolog,Composer 会重拉最新元数据
项目里写了 repositories,全局镜像就失效了
只要 composer.json 里有 "repositories" 字段,Composer 就会完全忽略全局配置的镜像源,连 monolog/monolog 都可能查不到——哪怕你只加了一条私有 Git 地址。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
检查方式:
-
composer config --list | grep repositories—— 有输出说明项目自己管源 - 常见错误:源地址已停服(比如 Laravel China 镜像已于 2023 年底下线),但没人删配置
- 临时绕过验证:
composer show -d repo.packagist=composer monolog/monolog - 若需保留私有源又想用 Packagist,必须显式启用:
{"type": "composer", "url": "https://repo.packagist.org"},且放在repositories数组最前面
composer require xxx:dev-main 找不到,不是镜像问题
镜像源默认只同步 stable 版本(如 1.0.0、2.3.4),dev-main、dev-develop 这类开发分支通常被跳过。即使包存在,镜像也不会拉取其完整 composer.json。
临时解决办法:
- 加
--prefer-source强制走 Git 克隆:composer require vendor/package:dev-main --prefer-source - 切回官方源:
composer config -g repo.packagist https://repo.packagist.org - 确认该包在 Packagist 页面上标记为 “Public”,且作者没设为 private
- 注意:
--prefer-source会显著拖慢安装速度,仅用于调试,别留着上线
最容易被忽略的一点:你改了镜像配置,但没加 -g 参数,或者项目级 repositories 静默覆盖了所有设置——这时候看 composer config -g --list 输出根本没用,得靠 composer diagnose 里的 Repo packagist.org: 行和实际请求日志来判断真实生效源。










