composer diagnose 不会自动修复问题,但能精准定位网络、权限、PHP扩展、composer.json语法四类占故障90%以上的根因,是排查install/update失败前最值得花10秒的诊断工具。
composer diagnose 不会自动修复问题,但它能精准定位 Composer 运行失败的根因——网络不通、权限不足、PHP 扩展缺失、composer.json 语法错误,这四类问题占实际故障的 90% 以上。运行它,是排查任何 composer install 或 update 失败前最值得花的 10 秒。
检查网络连通性与 HTTPS 支持
国内用户最常卡在这里:诊断显示 Checking http connectivity to packagist: FAIL 或 curl error 60: SSL certificate problem。这不是 Composer 本身坏了,而是它连不上 repo.packagist.org。
- 优先换镜像源(比调代理更快):
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/ - 若已配代理,确认环境变量没冲突:
echo $HTTP_PROXY和echo $HTTPS_PROXY;错误配置会导致“Connection timed out” - SSL 报错常见于 macOS 系统更新后 CA 证书失效,可临时验证:
php -r "print_r(openssl_get_cert_locations());",看default_cert_file路径是否存在且可读 - 不推荐长期禁用 TLS:
composer config -g disable-tls true—— 它绕过安全校验,仅用于临时验证是否为证书问题
验证 PHP 环境与扩展依赖
诊断提示 ext-openssl is missing 或 PHP version is too old,说明 Composer 自身或项目 require 的 PHP 版本/扩展未达标。Composer 2.x 要求 PHP ≥ 7.4,且 json、phar、openssl、mbstring 必须启用。
- 快速确认当前 PHP 配置:
php -m | grep -E '^(json|openssl|phar|mbstring)$' - 若扩展未列出,编辑
php.ini,取消对应;extension=行的注释;Linux 常见路径为/etc/php/*/cli/php.ini - 注意
disable_functions:某些共享主机禁用proc_open,会导致composer diagnose自身报错,而非仅提示扩展缺失 - 别只看
php -v,还要核对 Composer 实际调用的 PHP:composer --version --no-ansi末尾会显示 PHP 路径
排查目录权限与配置文件合法性
看到 vendor directory is not writable 或 The "composer.json" file is not valid JSON,说明环境就绪但项目层有硬伤。这类问题不会影响全局,但会直接中断所有命令执行。