DX3.4 报 Call to undefined method Redis::getMultiple() 无法开启redis扩展 New
整不会了系统Debian12和Ubantu22 搭 宝塔9.0.0和9.4.4
这个做实验的是全新的Discuz_X3.4_SC_UTF8_20230520版本
我知道答案 回答被采纳将会获得1 贡献 已有4人回答 X3.5的 开始redis扩展 就一切正常
X34和X35在同一个站点内不同二级目录里
以下回答来自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.dllextension=php_redis.dll``` ```()()
[*]Linux环境:
[*]编译安装指定版本:pecl download redis-3.1.6 tar zxvf redis-3.1.6.tgzcd redis-3.1.6 phpize && ./configure && make && make install ``` ```()()
步骤3:重启服务并验证
重启Web服务(Apache/Nginx)和PHP-FPM。在phpinfo()页面确认Redis扩展已加载,并检查版本是否符合预期。在Discuz后台开启Redis缓存,测试功能是否正常。
三、其他注意事项
依赖扩展优先级:igbinary扩展需在redis扩展之前加载,否则可能引发序列化问题。Redis配置检查:确保Redis服务已启动,且Discuz的config_global.php 中配置了正确的Redis连接参数(端口、密码等)。PHP线程安全版本:Windows环境下需注意选择TS(线程安全)或NTS扩展版本,与PHP主程序匹配。
感觉你的描述挺乱的。 同一个目录下的X34和x35,用php7应该不会有问题呀。分别用不同的域名就行了呀。配置文件不要用相同的前缀即可。注意:你的X34是大写的X。
我的网站也有x34和x35的,不过是不同的目录,不同的域名而已。后来x35用php8.1跑了。 解决啊完了
页:
[1]