ThinkPHP 依赖检查应通过 Composer 和 PHP 扩展双轨验证:用 composer show 查已装包及版本,composer show --platform 和 php -m 检查 PHP 环境扩展是否启用,缺一不可。

ThinkPHP 本身没有“安装命令”来检查依赖——它靠 Composer 管理依赖,真正该查的是 composer 是否装对、php 扩展是否齐备、vendor/ 是否完整。别在 think install 或类似伪命令上浪费时间。
用 composer show 确认已安装的包和版本
这是最直接的方式,反映当前项目真实安装状态:
-
composer show列出所有已安装的包(含topthink/framework、topthink/think-orm等) -
composer show topthink/framework查看框架具体版本、描述、依赖项 -
composer show --platform检查底层 PHP 环境:是否启用了mbstring、openssl、json等硬性依赖 - 如果输出里缺
topthink/framework,说明根本没通过composer create-project或require装过框架,不是“依赖没检查”,是压根没装
用 php -m 和 extension_loaded() 验证 PHP 扩展是否启用
ThinkPHP 启动报 Class not found 或 Call to undefined function,90% 是扩展没加载,不是 Composer 包的问题:
-
php -m | grep -E 'pdo|mbstring|gd|curl|xml'快速扫一遍 CLI 环境是否启用关键模块 -
php -r "var_dump(extension_loaded('pdo_mysql'));"单独验证某个扩展是否真被加载(注意:CLI 和 Web 环境的php.ini可能不同) - 宝塔用户特别注意:
php --ini查清加载了哪些 ini 文件,避免在/www/server/php/80/etc/php.d/下重复启用同一扩展导致冲突 - TP6 的验证码、Excel 导出等功能会直接调用
gd_info()或xml_parser_create(),扩展缺失时不是降级,而是直接抛异常
用 composer why 和 composer prohibits 定位依赖冲突源头
当你执行 composer update 或 composer require 报错 “Conclusion: don’t install thinkphp/framework v6.0.10”,说明版本约束打架了:
立即学习“PHP免费学习笔记(深入)”;
-
composer why thinkphp/framework查谁在 require 这个包(比如topthink/think-swoole锁在 TP5 分支) -
composer prohibits thinkphp/framework:6.0.10查哪几个包明确拒绝这个版本(常见于第三方扩展仍要求"topthink/framework": "^5.1") -
composer show -t topthink/think-orm看 ORM 包实际拉了哪些子依赖,确认有没有混入 TP5 兼容层 - 别忽略
--no-dev:开发依赖(如phpunit/phpunit)有时会偷偷带进不兼容的symfony/console版本
入口文件加几行 extension_loaded() 快速暴露问题点
比翻日志快得多,尤其适合部署后白屏调试:
- 在
public/index.php最顶部插入: if (!extension_loaded('pdo_mysql')) { die('pdo_mysql missing'); }if (!extension_loaded('mbstring')) { die('mbstring missing'); }if (!extension_loaded('gd')) { die('gd missing (required for captcha)'); }- TP6 的
think\captcha\Captcha构造时调用gd_info(),返回空数组就直接崩,不给机会 fallback - 这个方法不解决根本问题,但能立刻告诉你卡在哪——省掉反复刷新页面、查 Nginx 错误日志、怀疑代码写错的时间
复杂点在于:Composer 层面的依赖树和 PHP 扩展层的加载状态是两套独立系统,必须分开查。很多人卡在“composer show 显示框架已装,但访问就 500”,其实只是 php-fpm 没加载 mbstring,跟 Composer 一毛钱关系都没有。



















