久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

返回列表 發(fā)帖
查看: 522|回復(fù): 6

[求助] DX3.4 報 Call to undefined method Redis::getMultiple() 無法開啟redis擴展

21

主題

222

回帖

322

積分

爐火純青

貢獻
4 點
金幣
20 個
樓主
發(fā)表于 2025-3-3 18:25:46 | 只看樓主 |只看大圖 |倒序瀏覽 |閱讀模式

整不會了
系統(tǒng)Debian12和Ubantu22 搭 寶塔9.0.0和9.4.4
這個做實驗的是全新的Discuz_X3.4_SC_UTF8_20230520版本




我知道答案 回答被采納將會獲得1 貢獻 已有6人回答
回復(fù)

使用道具 舉報

21

主題

222

回帖

322

積分

爐火純青

貢獻
4 點
金幣
20 個
沙發(fā)
 樓主| 發(fā)表于 2025-3-3 18:37:06 | 只看Ta
X3.5的 開始redis擴展 就一切正常

X34和X35在同一個站點內(nèi)不同二級目錄里


回復(fù)

使用道具 舉報

28

主題

5574

回帖

1萬

積分

應(yīng)用開發(fā)者

貢獻
596 點
金幣
1442 個
QQ
板凳
發(fā)表于 2025-3-3 20:51:04 | 只看Ta
以下回答來自DeepSeek:




根據(jù)Discuz X3.4報錯「Call to undefined method Redis::getMultiple()」的解決方案,結(jié)合Redis擴展安裝和兼容性問題,整理以下解決步驟:

一、問題原因分析
  • 方法不存在:getMultiple()是Redis擴展舊版本的方法,在較新版本的PHPRedis擴展(如4.0+)中可能已被棄用或改名。
  • 擴展版本不兼容:Discuz X3.4可能依賴舊版Redis擴展接口,與當(dāng)前安裝的擴展版本存在兼容性問題。
  • 擴展未正確加載:Redis擴展或依賴的igbinary擴展未正確安裝或配置。

二、解決方案步驟1:檢查Redis擴展版本
  • 通過phpinfo()查看已安裝的Redis擴展版本(搜索「redis」字段)。
  • 若版本≥4.0:需修改Discuz代碼,將getMultiple()替換為mget()(新版本推薦方法)。// 原代碼 $redis->getMultiple($keys);// 修改為$redis->mget($keys);
步驟2:安裝兼容的Redis擴展
若需降級Redis擴展版本(例如適配PHP7):
  • Windows環(huán)境
    • 下載舊版擴展:訪問 PECL Redis歷史版本 ,選擇如3.1.6版本(支持PHP7且含getMultiple方法)。
    • 替換文件:將php_redis.dll 和php_igbinary.dll 復(fù)制到PHP的ext目錄,并在php.ini 中按順序加載:extension=php_igbinary.dll  extension=php_redis.dll  ``` ```[9]()[11]()
  • Linux環(huán)境
    • 編譯安裝指定版本: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:重啟服務(wù)并驗證
  • 重啟Web服務(wù)(Apache/Nginx)和PHP-FPM。
  • 在phpinfo()頁面確認(rèn)Redis擴展已加載,并檢查版本是否符合預(yù)期。
  • 在Discuz后臺開啟Redis緩存,測試功能是否正常。

三、其他注意事項
  • 依賴擴展優(yōu)先級:igbinary擴展需在redis擴展之前加載,否則可能引發(fā)序列化問題。
  • Redis配置檢查:確保Redis服務(wù)已啟動,且Discuz的config_global.php 中配置了正確的Redis連接參數(shù)(端口、密碼等)。
  • PHP線程安全版本:Windows環(huán)境下需注意選擇TS(線程安全)或NTS擴展版本,與PHP主程序匹配。



回復(fù)

使用道具 舉報

21

主題

222

回帖

322

積分

爐火純青

貢獻
4 點
金幣
20 個
地板
 樓主| 發(fā)表于 2025-3-3 22:55:44 | 只看Ta
跟那幾個AI玩了一天命了也沒給個有效的方法

根據(jù)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內(nèi)容幾乎沒區(qū)別
X35也是用的 getMultiple( 就可以正常開啟擴展
而X34 用 getMultiple( 就沒辦法開啟 擴展
換服務(wù)器之前是可以用的 運行環(huán)境和也是和現(xiàn)在的一樣
回復(fù)

使用道具 舉報

8

主題

457

回帖

586

積分

應(yīng)用開發(fā)者

貢獻
17 點
金幣
13 個
QQ
5#
發(fā)表于 2025-3-4 10:36:47 | 只看Ta
感覺你的描述挺亂的。 同一個目錄下的X34和x35,用php7應(yīng)該不會有問題呀。分別用不同的域名就行了呀。配置文件不要用相同的前綴即可。注意:你的X34是大寫的X。

我的網(wǎng)站也有x34和x35的,不過是不同的目錄,不同的域名而已。后來x35用php8.1跑了。
回復(fù)

使用道具 舉報

21

主題

222

回帖

322

積分

爐火純青

貢獻
4 點
金幣
20 個
6#
 樓主| 發(fā)表于 2025-3-4 13:19:59 | 只看Ta
解決啊完了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

  • 關(guān)注公眾號
  • 有償服務(wù)微信
  • 有償服務(wù)QQ

手機版|小黑屋|Discuz! 官方交流社區(qū) ( 皖I(lǐng)CP備16010102號 |皖公網(wǎng)安備34010302002376號 )|網(wǎng)站地圖|star

GMT+8, 2025-7-1 21:43 , Processed in 0.053596 second(s), 13 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2025 Discuz! Team.

關(guān)燈 在本版發(fā)帖
有償服務(wù)QQ
有償服務(wù)微信
返回頂部
快速回復(fù) 返回頂部 返回列表