ThinkPHP各版本均强制要求mbstring、pdo、openssl、curl四大扩展,缺一则启动即Fatal Error;TP5.1+需fileinfo和json,TP6.x追加pdo_mysql/redis,TP7.0+/TP8.0强制zip扩展,且须用php -r验证真实加载。

ThinkPHP 不同版本对 PHP 扩展的要求略有差异,但只要缺了任一必需扩展,启动时就会直接报错甚至中断初始化,不会进入路由或控制器逻辑。以下是各主流版本明确要求、缺一则报错的扩展清单:
所有 ThinkPHP 版本共通的“硬性依赖”(缺一即 Fatal Error):
-
mbstring:处理中文路径、UTF-8 字符串、路由解析;缺它会导致
Class 'think\App' not found或路由乱码 404 -
pdo(或具体驱动如
pdo_mysql):框架数据库抽象层底层依赖;缺它连php think version都执行失败 -
openssl:用于安全密钥生成(
php think key:generate)、HTTPS 请求、Session 加密;缺则提示Unable to generate secure key -
curl:ThinkPHP 7.0+ 已将其从“推荐”升为必需,HTTP 客户端、配置中心拉取、官方 SDK 全部依赖;禁用后
php think optimize:route等命令直接中断
按版本补充的关键扩展:
-
ThinkPHP 5.1+:还需
fileinfo(文件上传类型校验)、json(配置解析,PHP 7.1+ 默认启用,但旧环境需确认) -
ThinkPHP 6.x:明确要求
fileinfo、pdo_mysql(若用 MySQL)、redis(若启用缓存驱动) -
ThinkPHP 7.0+:强制要求 PHP ≥ 8.1,并新增对
zip扩展的依赖(Composer 创建项目、解包依赖时触发ZipArchive类调用) -
ThinkPHP 8.0:
zip扩展缺失会直接报The zip extension and unzip/7z commands are both missing,且php -r "new ZipArchive();"必须成功
验证是否真正生效,不能只看 php -m:
立即学习“PHP免费学习笔记(深入)”;
- 运行
php -r "var_dump(extension_loaded('mbstring'));"→ 必须输出bool(true) - 运行
php -r "new ZipArchive(); echo 'OK';"→ 必须输出OK,否则即使php -m显示 zip,也属于静默加载失败
漏配扩展的典型错误表现不是警告,而是:
-
Fatal error: Uncaught ErrorException: Required extension not loaded: mbstring -
Class 'ZipArchive' not found -
Call to undefined function curl_init() -
Class 'PDO' not found
不复杂但容易忽略



















