返回列表 发布新帖

DX3.4 报 Call to undefined method Redis::getMultiple() 无法开启redis扩展 New

109 2
发表于 2025-3-3 20:42:54 | 查看全部 阅读模式
整不会了
系统Debian12和Ubantu22 搭 宝塔9.0.0和9.4.4
这个做实验的是全新的Discuz_X3.4_SC_UTF8_20230520版本

d1.png
d2.png

我知道答案 回答被采纳将会获得1 贡献 已有2人回答

评论2

淤芯咬Lv.3 发表于 2025-3-3 20:43:49 | 查看全部
X3.5的 开始redis扩展 就一切正常

X34和X35在同一个站点内不同二级目录里
d1.png
d2.png
回复

使用道具 举报

黎世敏Lv.4 发表于 2025-3-3 20:44:35 | 查看全部
以下回答来自DeepSeek:




根据Discuz X3.4报错「Call to undefined method Redis::getMultiple()」的解决方案,结合Redis扩展安装和兼容性问题,整理以下解决步骤:


一、问题原因分析
    方法不存在:getMultiple()是Redis扩展旧版本的方法,在较新版本的PHPRedis扩展(如4.0+)中可能已被弃用或改名。扩展版本不兼容:Discuz X3.4可能依赖旧版Redis扩展接口,与当前安装的扩展版本存在兼容性问题。扩展未正确加载:Redis扩展或依赖的igbinary扩展未正确安装或配置。

二、解决方案步骤1:检查Redis扩展版本
    通过phpinfo()查看已安装的Redis扩展版本(搜索「redis」字段)。若版本≥4.0:需修改Discuz代码,将getMultiple()替换为mget()(新版本推荐方法)。// 原代码 $redis->getMultiple($keys);// 修改为$redis->mget($keys);
步骤2:安装兼容的Redis扩展
若需降级Redis扩展版本(例如适配PHP7):


  • Windows环境
      下载旧版扩展:访问 PECL Redis历史版本 ,选择如3.1.6版本(支持PHP7且含getMultiple方法)。
    • 替换文件:将php_redis.dll 和php_igbinary.dll 复制到PHP的ext目录,并在php.ini 中按顺序加载:extension=php_igbinary.dll  extension=php_redis.dll  ``` ```[9]()[11]()

  • Linux环境

    • 编译安装指定版本:pecl download redis-3.1.6 tar zxvf redis-3.1.6.tgz  cd redis-3.1.6 phpize && ./configure && make && make install ``` ```[7]()[9]()

步骤3:重启服务并验证
    重启Web服务(Apache/Nginx)和PHP-FPM。在phpinfo()页面确认Redis扩展已加载,并检查版本是否符合预期。在Discuz后台开启Redis缓存,测试功能是否正常。

三、其他注意事项
    依赖扩展优先级:igbinary扩展需在redis扩展之前加载,否则可能引发序列化问题。Redis配置检查:确保Redis服务已启动,且Discuz的config_global.php 中配置了正确的Redis连接参数(端口、密码等)。PHP线程安全版本:Windows环境下需注意选择TS(线程安全)或NTS扩展版本,与PHP主程序匹配。



回复

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

5857225@qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
  • 关注公众号
  • 添加微信客服
Powered by Discuz! X5.0 Licensed 2022-2025 吾7分享 版权所有 All Rights Reserved. |网站地图|湘公网安备43112302000109号 ICP备案:湘ICP备19002042号-3
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表