把论坛从discuz x3.4升级到了discuz x3.5,中间遇到了一些问题
强烈建议把所有数据及程序下载到本地再进行本地升级,然后传上去
按照官方的方法一步一步来
升级操作不可逆,操作前请完整备份网站文件和数据库(云服务器至少创建快照备份,最好多种方式备份),切勿不备份就升级,以免数据丢失。(如果备份的数据库文件未压缩时的大小远小于后台首页显示的大小,那一般是数据备份不完整,恢复这种备份可能导致数据丢失)
从 Discuz! X3.2 – X3.4 升级(GBK升级会自动转换到UTF8)
- 确认UC通信正常,并下载X3.5最新版压缩包文件:https://www.dismall.com/thread-14660-1-1.html
- 备份数据库和程序文件,请不要忘记备份 UCenter 数据库和程序文件(云服务器快照备份,虚拟主机主机管理里备份文件和数据库)。
- 进入您的 UCenter 所在目录(默认为 论坛根目录/uc_server),建立文件夹 old,将 UCenter 目录下除 data 目录以外的其他文件夹移动进入 old 目录中。如移动文件中存在包括但不限于 .htaccess 或 .user.ini 等的网站配置文件,请不要移动。
- 上传 UCenter 1.7.0 程序(压缩包中 upload/uc_server 目录中的文件,如使用 FTP 上传请使用二进制模式), 如上传时候提示覆盖目录,请选择 “是”。
- 下载 update_ucenter_adult.zip (17.11 KB, 下载次数: 5183) ,将压缩包内的 update_ucenter_adult.php 上传到 UCenter 所在目录(默认为 uc_server )下的 install 目录,并删除 UCenter 所在目录下 data 目录的 upgrade.lock 文件。
- 浏览器访问 UCenter 所在目录下 install 目录下的 update_ucenter_adult.php(默认为 论坛网址/uc_server/install/update_ucenter_adult.php) 并参照提示进行升级即可。升级时间随着数据的大小和服务器性能而变。
- 将除 data, config 目录,和 UCenter 所在目录(默认为 uc_server,如果该目录不在论坛根目录下的话可排除此项)以外的其他文件夹移动进入 old 目录中。如移动文件中存在包括但不限于 .htaccess 或 .user.ini 等的网站配置文件,请不要移动。
- 将 old/source/plugin 和 old/template 目录下除 default 以外的目录,移动回 source 和 template 目录下面(也可在上一步移动文件时,直接在原位置保留这部分文件)。
- 上传 Discuz! X3.5 程序(压缩包中 upload 目录中的文件,如使用 FTP 上传请使用二进制模式), 如上传时候提示覆盖目录,请选择 “是”。
- 下载 update_adult.zip (22.79 KB, 下载次数: 4185) ,将压缩包内的 update_adult.php 上传到 Discuz! 所在目录下 install 目录,并删除 Discuz! 所在目录下 data 目录的 update.lock 文件。
- 浏览器访问 Discuz! 所在目录下 install 目录下的 update_adult.php(默认为 论坛网址/install/update_adult.php) 并参照提示进行升级即可。升级时间随着数据的大小和服务器性能而变。(90%以上的时间在这步)
- 升级完成后,删除 update_ucenter_adult.php 和 update_adult.php
注意事项:
X3.4的插件模板不一定兼容X3.5
升级会自动关闭全部插件,升级完成后自己再开启
GBK用户升级后用户的安全问答会清空
升级后全部功能模块都会开启,不需要的功能自行关闭
然后说说我遇到的问题:
升级ucenter比较顺利,但是升级论坛数据库的时候,就是运行update_adult.php的时候遇到问题了,老是提示pre_xreports的文字排序latin1_general_ci不受支持,请人工处理后再继续!
好吧,那我就进数据库把那个表格的编码手工改成gbk_chinese_ci,然后并没有什么卵用,每次到了这一步还是提示
我仔细看了一下,貌似这个表是以前升级时候留下来的错误信息记录表
然后我一狠心把这个表备份后删除了
然后程序才能正常执行下去
然后我把论坛传上空间去了,但是前台登录时候老是提示密码不对还是什么的,我忽然想起要修改uc_server 的地址,就在\config\config_ucenter.php里面
但是进入后台又死活不行了,没办法我想进一下uc_server,但我自己不记得密码了,于是又被锁了,然后进数据库,把pre_ucenter_failedlogins里面的记录清空了,然后就可以继续猜测创始人密码,输对了就能进去了,比如我自己的是大小小写6
然后我在前台登录,死活不能登录后台,一看被锁了,提示
好吧,继续进数据库,把相关登录的记录删除
pre_common_admincp_session这个表里面的记录删除或清空即可
但是及时密码对了也登录不进,貌似和UC通讯有关,然后我想起UC和服务器通讯之间貌似还有一个key的,于是我打开\uc_server\data\config.inc.php找到了UC_KEY
把他复制到\config\config_ucenter.php相应的UC_KEY中,心想,这次应该可以进后台了把,但是仍然不给我进,提示
我以为是缓存问题,根据他的提示,更新了缓存
所有的都更新了,但是并没有什么卵用,于是我上网搜索了一下,貌似说
discuz论坛的配置文件里的安全检查有关,把安全检查禁用即可解决问题
打开\config\config_global.php文件,找到
$_config[‘security’][‘urlxssdefend’] = true; // 自身 URL XSS 防御
改为
$_config[‘security’][‘urlxssdefend’] = False; // 自身 URL XSS 防御
终于,可以看到后台页面了,花费了我2个多小时。
但是uc_server后台的应用管理哪里还是连不上,但是貌似不影响使用,算了,懒得理它了