composer 没有官方在线诊断工具,composer diagnose 是唯一可靠、本地执行的自检命令——所有所谓“在线排查器”要么是包装了这个命令的网页壳子,要么根本不可信,还可能上传你的 composer.json 或认证凭据。

Composer 没有官方在线诊断工具,composer diagnose 是唯一可靠、本地执行的自检命令——所有所谓“在线排查器”要么是包装了这个命令的网页壳子,要么根本不可信,还可能上传你的 composer.json 或认证凭据。
为什么不能信“在线 Composer 诊断网站”
这类网站通常要求你粘贴 composer.json、composer.lock 甚至 auth.json 内容,风险极高:
- 私有包名、内部仓库地址、GitHub token 可能被记录或泄露
- 它们无法复现你本地的 PHP 版本、扩展、CA 证书路径、Git 配置、代理环境
- 诊断逻辑远不如
composer diagnose严谨——连vendor/是否可写都懒得检查,只做 JSON 格式校验
composer diagnose 必须在项目根目录运行
它不会向上查找 composer.json,进错目录就直接失败:
- 错误现象:
[FAIL] No composer.json present - 常见误操作:在
src/、tests/、项目父级目录,或 DockerWORKDIR设错位置 - 确认方式:
ls -A | grep composer.json,有输出才算对 - CI 脚本里必须显式
cd $PROJECT_ROOT,否则全白跑
composer diagnose 的 WARNING 就是 FAIL
它标 OK 不代表你能装包,但标 WARNING 几乎一定导致后续 install 或 update 中断:
-
Checking CA bundle: WARNING→ 后续必报cURL error 60,运行php -r "print_r(openssl_get_cert_locations());"查default_cert_file是否存在且可读 -
Checking github.com rate limit: WARNING→ 实际是 token 过期或权限不足,手动跑curl -I https://api.github.com/rate_limit看X-RateLimit-Remaining -
Checking git settings: WARNING→ 很可能是git config --global http.sslverify false,Composer 不认这个配置,得配cafile或改回true
真要查安装卡点,用 -vvv,不是换网站
composer diagnose 只管“冷启动”,而 composer install -vvv 才暴露真实瓶颈:
- 日志停在
Resolving dependencies through SAT→ 约束太紧,不是网络问题 - 出现
Failed to decode response: zlib_decode(): data error→ 代理或 CDN 损坏了压缩响应 - 开头就报
Reading ./composer.json failed→ JSON 语法错,比后面几百行冲突更优先修复 - 保存完整日志:
composer install -vvv 2>&1 | tee debug.log,再grep -i "error\|exception\|failed"快速定位
最常被忽略的一点:composer diagnose 完全不验证你 composer.json 里写的 "php": "^8.2" 或 "ext-redis": "*" 是否真满足——它只管自己能不能跑起来。装包失败时,先看报错关键词,再决定是调环境、改约束,还是换镜像;别让一个“在线工具”的输入框,带偏你真正的排障路径。











