composer show 是最准的诊断方式,直接读取 composer.lock 中的锁定记录,不依赖运行时环境;执行 composer show topthink/framework 可明确看到实际安装版本如 6.1.0 或 dev-develop#abc1234,若提示命令未定义需先 composer self-update。

composer show 能直接看到已安装包的真实版本
这是最准的诊断方式,不依赖运行时环境,直接读 composer.lock 里的锁定记录。执行前确保在项目根目录:
-
composer show topthink/framework—— 查 ThinkPHP 实际装的是6.1.0还是dev-develop#abc1234 -
composer show monolog/monolog—— 看日志组件是否被其他包间接拉入、版本是否冲突 - 输出中带
*的那一行就是当前生效版本;若提示Command "show" is not defined,说明 Composer 太老,需先运行composer self-update - 别用
composer info,新版已弃用,行为不可靠
composer diagnose 检查本地配置和网络连通性
这个命令专为环境诊断设计,会逐项验证 Composer 自身运行条件:
- 检查 PHP 版本、禁用函数(如
proc_open)、allow_url_fopen是否开启 - 验证
composer.json格式是否合法(JSON 语法错误、末尾多逗号都会报) - 测试与 Packagist 的连接:如果卡在
Checking platform settings后长时间无响应,大概率是 DNS 或代理问题 - 若提示
Warning: The xdebug extension is loaded,不是错误但会影响 install 速度,可临时禁用
离线或权限受限时,手动查 vendor 目录下的源码注释
当服务器禁止执行 PHP、Composer 不可用、或你只有 FTP 权限时,这是兜底方案:
- ThinkPHP 6.x:打开
vendor/topthink/framework/src/thinkphp/App.php,搜索const VERSION或顶部@version注释 - Yii 2:运行
php requirements.php(路径通常为requirements.php在项目根目录) - Laravel:没有内置脚本,但可用
php artisan --version(需能执行 Artisan) - 注意别误入
thinkphp/library/think/App.php—— 这是门面类,不含版本定义
镜像配置是否生效?用 dist URL 验证才靠谱
很多人配了阿里云镜像却还是慢,是因为只改了元数据源,没覆盖实际 ZIP 包下载地址:
- 运行
composer config -g repo.packagist确认全局源已设为https://mirrors.aliyun.com/composer/ - 再执行
composer show monolog/monolog | grep dist,看到 URL 是https://mirrors.aliyun.com/composer/dists/...才算真正生效 - 若仍是 GitHub 原始地址,说明没启用
dist-url-rewrite插件,需先装aliyuncs/composer-mirror-plugin - 私有仓库或自定义
repositories会绕过全局镜像,这类包得单独配dist-url
composer.json 里只是“愿望”,composer.lock 才是“契约”。环境诊断必须以 lock 文件为准,否则所有判断都可能建立在虚假前提上。


















