ThinkPHP7不存在,当前最新稳定版为TP6.3.x与TP8.1+;所谓“TP7”实为TP6伪装,执行php think version若输出v6.x即按TP6规范配置Redis,无需适配PHP7.3。

ThinkPHP7官方未发布,当前最新稳定版为ThinkPHP6.3.x与ThinkPHP8.1+,所谓“TP7”实为社区误传或非官方分支;若项目中出现TP7字样,极大概率是开发者自行升级TP6核心导致的版本标识篡改,此时Redis连接行为完全继承TP6规范,而非独立演进——直接按TP6配置即可生效,无需额外适配PHP7.3。
确认你用的真是TP7还是TP6伪装
执行php think version命令,输出含v6.即为TP6系,无论文件夹名或composer.json里写的是什么;输出含v8.则为TP8。TP7不存在于topthink官方仓库、Packagist或GitHub release列表中。
若强行将TP6升级到PHP7.3环境后修改了框架命名空间或版本常量,Redis驱动仍走think\cache\driver\Redis类,底层调用phpredis扩展的connect()或pconnect()方法,与PHP7.3无特殊交互逻辑。
PHP7.3下Redis连接的关键适配点
PHP7.3本身对Redis扩展无破坏性变更,但需注意以下三点:
立即学习“PHP免费学习笔记(深入)”;
① phpredis扩展版本必须≥4.3.0:低于此版本在PHP7.3下可能出现Segmentation fault或Class 'Redis' not found,因PHP7.3收紧了ZEND引擎的资源释放校验。
② 【timeout参数必须为整数或浮点数,不可为字符串】:TP6配置中'timeout' => '3'在PHP7.3下会触发类型警告并静默转为0,导致连接立即超时失败;应写为'timeout' => 3或'timeout' => 3.0。
③ pconnect持久连接在CLI模式下可能复用异常连接:PHP7.3默认启用opcache.preload,若preload阶段提前初始化了Redis连接,后续Web请求可能拿到已断开的句柄——建议在config/cache.php中设'persistent' => false,除非明确需要连接池复用。
TP6在PHP7.3中验证Redis连通性的正确方式
方法一:用Cache门面的handler直连检测(推荐)
Cache::store('redis')->getHandler()->ping() → 成功返回+PONG,失败抛出think\exception\CacheException。
方法二:绕过缓存层,手建原生实例
$redis = new \Redis(); $redis->connect('127.0.0.1', 6379, 3); echo $redis->ping(); → 避免TP驱动封装干扰,精准定位是PHP环境问题还是配置问题。
注意:Cache::get('test')返回null不能证明连接失败——可能是键不存在,必须用ping()确认链路可达。



















