楔子#
同服务器上的其他服务需要 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
。