楔子#
同伺服器上的其他服務需要 PHP8+,WordPress 和 Discuz!的目前版本都不支援,需要升級。
官方#
修正#
以伺服器上的 Discuz! 目錄作為根目錄 "/" 為例:
- 要先在後台管理 /uc_server/admin.php 中關閉站點
- UC 通訊正常是指 Discuz<->UC 雙向正常,兩側都需要確認
- 關於
UC_KEY
:/uc_server/data/config.inc.php 與 /config/config_ucenter.php 中的可以是不一樣的,以已存在的為準,不要根據官方指南的要求改成一樣,否則 Discuz->UC 失敗 - 關於
UC_DBTABLEPRE
:/uc_server/data/config.inc.php 與 /config/config_ucenter.php 中的是不一樣的,Discuz!的 config 要包括dbName
. 的前綴 - 升級過程中的問題大多來自於這兩個配置文件不對
- 如果沒有關閉站點,Discuz 升級中會卡在 envcheck 的後一步,刷新一次即可
- 升級完畢原創始人能登入論壇但無法進入管理後台,如果是使用者組的問題可以直接修改資料庫
update [table]common_member set groupid=1 where uid=%d;
- 升級完畢要更新快取,否則樣式遺失
- 升級完畢使用者無法更新頭像,也是 UC 通訊的問題
- Discuz!的 PHP8 相容不完善,特別是
$_G['settings']['bannedmessages']
屬性。這個屬性在 admincp 生成的時候使用了字串拼接,但驗證相關標誌位的時候使用了位運算,導致$_G['settings']['bannedmessages'] & 1
這種語句會觸發Uncaught TypeError: Unsupported operand types: string & int的錯誤,需要把相關的語句改為intval($_G['settings']['bannedmessages']) & 1
。