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 贡献 已有5人回答 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主程序匹配。
跟那几个AI玩了一天命了也没给个有效的方法
根据X3.4后台给错误日志:
Call to undefined method Redis::getMultiple()
PHP:
index.php#require(%s):0142
forum.php#discuz_application->discuz_application->init():0057
source/class/discuz/discuz_application.php#discuz_application->discuz_application->_init_setting():0067
source/class/discuz/discuz_application.php#loadcache():0732
source/function/function_core.php#table_common_syscache->table_common_syscache->fetch_all():0712
source/class/table/table_common_syscache.php#memory():0038
source/function/function_core.php#discuz_memory->discuz_memory->get():1733
source/class/discuz/discuz_memory.php#memory_driver_redis->memory_driver_redis->getMulti():0057
source/class/memory/memory_driver_redis.php#break():0067
对比了上面几个文件的 X34和X35内容几乎没区别
X35也是用的 getMultiple( 就可以正常开启扩展
而X34 用 getMultiple( 就没办法开启 扩展
换服务器之前是可以用的 运行环境和也是和现在的一样 感觉你的描述挺乱的。 同一个目录下的X34和x35,用php7应该不会有问题呀。分别用不同的域名就行了呀。配置文件不要用相同的前缀即可。注意:你的X34是大写的X。
我的网站也有x34和x35的,不过是不同的目录,不同的域名而已。后来x35用php8.1跑了。 解决啊完了
页:
[1]