composer diag 不查镜像问题,因其默认只连接 https://packagist.org 并检测本地 php 环境(openssl、curl、时间等),完全忽略已配置的中文镜像;验证镜像需手动执行 composer config -g repo.packagist 确认地址,再用 curl -i 测试元数据接口返回 200,并清理 provider 缓存目录而非仅 clear-cache。

composer diag 为什么查不出镜像问题
composer diag 默认只连 https://packagist.org,完全忽略你配置的中文镜像。它测的是本地 PHP 环境(OpenSSL、curl、系统时间),不是镜像可用性。看到 “Connection to https://packagist.org failed” 不代表阿里云/腾讯云镜像坏了——只是说明你本地连不上官方源,而镜像可能正正常工作,也可能已同步滞后。
真正验证镜像是否生效,得绕过 diag,直接看 Composer 实际行为:
- 运行
composer config -g repo.packagist(注意是repo单数,不是repos)确认输出是类似{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 手动
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回HTTP/2 200才算通 - 若返回
404或超时,说明镜像服务异常;若返回200但composer show vendor/package仍报错,大概率是元数据缓存未更新
为什么 clear-cache 没用,还得删 provider 缓存目录
composer clear-cache 只清 ZIP 包和 dist 缓存,对 packages.json 和 provider-*.json 这类元数据几乎无效。镜像同步延迟导致 composer show 找不到包,本质是 Composer 在读本地缓存的旧索引。
唯一有效做法是手动清理 provider 缓存目录:
- 先定位路径:
ls -d ~/.composer/cache/repo/https---mirrors.aliyun.com-composer(Linux/macOS)或dir %APPDATA%\Composer\cache\repo\https---mirrors.aliyun.com-composer(Windows) - 直接删掉整个目录:
rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com-composer - 再执行
composer show vendor/package,Composer 会强制重拉最新packages.json和p/vendor/package.json
项目级 repositories 配置会静默屏蔽全局镜像
你在终端执行了 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,但进项目一跑 composer require,日志里还是出现 Downloading https://packagist.org/——大概率是项目根目录的 composer.json 里写了 "repositories" 字段。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
只要 composer.json 含 "repositories",Composer 就优先用它,全局配置被静默覆盖。排查要点:
- 运行
composer config repositories查当前项目实际生效的源列表 - 检查
composer.json中"repositories"是否包含"packagist.org": false,这会彻底禁用默认源,但没配好镜像 URL 就等于“没源” - 如果要保留私有源又启用镜像,必须把镜像配置写进
repositories数组首位,并显式声明"packagist.org": false作为同一对象的键
子模块里 “Could not find package” 常跟镜像无关
Git 子模块默认不自动检出内容,modules/my-submodule/ 目录下可能只有空文件夹,composer.json 根本不存在。这时 Composer 连“查镜像”这步都走不到,直接报错。
必须先确保子模块已初始化:
- 在项目根目录运行
git submodule status,若输出含-开头或为空,说明未检出 - 执行
git submodule update --init --recursive - 进子模块目录,确认存在合法
composer.json(至少含name和autoload) - 子模块内运行
composer diagnose,看Repo packagist.org:行输出的 URL 是否为你期望的镜像地址——子模块不继承父项目的全局镜像配置
镜像同步延迟这类问题,在子模块场景下往往被误判;真正卡住的,常是 Git 层面的初始化缺失或 composer.json 结构不合法。










