composer diag连不上packagist.org不是镜像失效,而是它硬编码只测https://packagist.org、完全忽略所有镜像配置;验证镜像需用curl直连packages.json并检查HTTP状态码与时间戳。

composer diag 说连不上 packagist.org?别信它
这个提示根本不是在测你的阿里云/腾讯镜像,composer diag 默认只访问 https://packagist.org,完全忽略你配置的 repos.packagist.url。它只是检查 PHP 是否能发基础 HTTPS 请求,不是镜像可用性验证工具。
真正要确认镜像是否工作,得手动查:
- 运行
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/monolog/monolog.json,看Last-Modified时间戳是否接近当前时间
composer show 找不到包?清错缓存了
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 - Windows 用户路径类似
%APPDATA%\Composer\cache\repo\https---mirrors.aliyun.com-composer,别用clear-cache白忙活
子模块里 require 失败?先初始化 Git 子模块
报 Could not find package 不是镜像缺包,而是子模块目录下压根没 composer.json——Git 子模块默认不自动检出内容,modules/my-submodule/ 可能只是个空文件夹。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
必须按顺序做:
- 在项目根目录运行
git submodule status,看有没有以-开头的行(表示未初始化) - 执行
git submodule update --init --recursive - 进子模块目录,确认
composer.json存在且含合法name字段(大小写、斜杠方向必须和require完全一致) -
composer install --working-dir=modules/foo不会触发 submodule 初始化,别指望它绕过这步
EOF 错误卡在某个 JSON 文件?先 -v 定位再动手
EOF 错误本质是 Composer 解析 JSON 或 ZIP 时读到一半就断了,常见于镜像源返回不完整 packages.json 或 dist 包下载截断。
别急着删 vendor,先加 -v:
- 跑
composer update -v,盯住最后一行成功的 URL:是https://mirrors.aliyun.com/composer/p2/xxx.json?还是本地vendor/composer/installed.json? - 如果是远程 URL,
composer clear-cache后换 USTC 镜像源试试(稳定性比阿里云高) - 如果是本地文件,用
head -c 100 vendor/composer/installed.json看结尾是否乱码;是的话删掉它让 Composer 重生成 - 如果报错指向某个包的
composer.json,大概率是 dist ZIP 下载不全,删整个vendor/vendor-name/package-name目录再重装
镜像同步失败导致的 packages.json 本身就不完整,这才是 EOF 最常藏身的地方。

















