
直接运行 composer --version 就能确认是否装好
这是最快速、最权威的判断方式——只要终端里能打出类似 Composer version 2.7.7 的输出,就说明 Composer 已正确安装并可全局调用。
常见错误现象:command not found 或 'composer' is not recognized as an internal or external command。这不代表 Composer 没下载,而是没进系统 PATH,或 Windows 下没配对 PHP 路径。
- Linux/macOS:检查
/usr/local/bin/composer是否存在,且文件有执行权限(ls -l /usr/local/bin/composer) - Windows:确认安装时指定的
php.exe路径正确;若用局部方式,必须每次用php composer.phar --version,不能只输composer - 别被
php -v欺骗:PHP 装好了 ≠ Composer 装好了,两者完全独立
composer diagnose 不是“安装检测”,而是“运行环境体检”
composer diagnose 不会告诉你“有没有装上”,它只回答“现在能不能安全跑 install/update”。哪怕结果全是 OK,也完全可能 composer install 报错。
典型脱节场景:
- 显示
Checking platform settings: OK,但实际缺ext-redis——diagnose只查 PHP 自带扩展(如json、openssl),不查你项目 require 的扩展 -
https connectivity to packagist: OK成功,但私有仓库地址写错或 token 过期——diagnose根本不访问你配置的repositories - 用
platform配置伪造了 PHP 8.2,真实环境却是 8.1——diagnose不校验这个“谎言”是否成立
所以别把它当安装验证工具,它是上线前或 CI 中排查环境兼容性的辅助手段。
想看某个包用了哪个版本?composer show 是唯一靠谱命令
composer show 默认列出所有已安装包的名称和当前版本,不查 composer.json 声明,只读 vendor/ 和 composer.lock 的真实状态。
实操建议:
- 查具体包:
composer show monolog/monolog—— 输出含版本、依赖、源类型(git/dist)、安装路径 - 只取版本号(脚本可用):
composer show monolog/monolog --format=json | php -r "echo json_decode(file_get_contents('php://stdin'))->version;" - 看全部可用版本(含未安装的):
composer show -a monolog/monolog,注意加-a才会刷新远程元数据,否则可能滞后
别打开 composer.lock 手动搜——格式易错、reference 和 version 可能不一致,且 dev 分支没记录在 lock 里。
镜像配置错了,--version 和 diagnose 都不会报
设置国内镜像(如阿里云 https://mirrors.aliyun.com/composer/)只是影响后续 install 速度,跟安装成功与否、版本号显示、环境诊断完全无关。
容易踩的坑:
- 误用已停服的镜像(如旧版
https://packagist.phpcomposer.com):不会让composer --version失败,但首次require时直接卡死或 404 - 全局配置(
config -g)和项目级配置混用:项目里composer.json的repositories会覆盖全局镜像,此时diagnose仍显示 OK,但行为已变 - 镜像仅加速下载,不解决证书、代理、DNS 等底层网络问题——这些
diagnose里的https connectivity项也测不出来
真正要验证镜像是否生效,得跑一次 composer show -a 或 composer require,看请求 URL 是不是指向你设的域名。










