Discuz!报错问题汇总

1、解决 X3.2 全局 HTTPS 问题思路

购买 SSL 证书

购买适合自己论坛的 SSL 证书,证书大致上分为标准型 DV SSL 证书、企业型 OV SSL 证书以及增强型 EV SSL 证书。

在服务端 WEB 服务器配置

参考文档:点击具体查看各种 WEB 服务器配置

在后台配置全局 HTTPS

进入 admin.php 后台,点击全局 - 站点信息 - 网站 URL 填写 https://yourdomain.com/admin.php

修成 Discuz 适配 https

如果你的 Web 服务是 Apache,请忽略这一步,Nginx 请继续看
Discuz 判断网站是否启动 SSL 是采用 $_SERVER[‘HTTPS’] 的方式,此方法不支持 Nginx(nginx+php-fpm),需要先做一些修改,让 Discuz 使用 $_SERVER[‘SERVER_PORT’]来判断网站是否启用 SSL
进入安装 DIscuz 根目录右键修改 public_html/source/class/discuz/discuz_application.php

1
$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;

修改为:

1
$_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;

进入安装 DIscuz 根目录继续修改 public_html/uc_server/avatar.php

1
define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

修改为:

1
define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

后台 Ucenter 通信使用 https 方式

若不更改亦可以,这一步可以忽略
进入 admin.php 后台,点击站长 - UCenter 设置 - UCenter 访问地址将 http 改为 https 其后将头像调用方式改为使用静态地址调用头像。

后台 Ucenter 无法通信

审查元素,观察 return error 然后去官方找到相应的解决方法。

修成 Discuz 文章 https

进入安装 DIscuz 根目录继续修改 public_html/source/function/function_core.php
$content = output_replace($content);代码下方处添加
$content = str_replace('http://www.xxx.com','https://www.xxx.com',$content);
如果你有二级目录请这样添加
$content = preg_replace('http://(.*?)xxx.com','https://\1xxx.com',$content);


2、X3.2 升级至最新 X3.4 总结

准备前置条件:

DiscuzX 程序版本:Discuz! X3.2 Release 20141225 DiscuzX
后台版本:UCenter 1.6.0 DiscuzX
最新版本下载地址:https://gitee.com/3dming/DiscuzL/attach_files

操作步骤:

1)备份数据库,导出转储 SQL 文件结构和数据;
2)备份服务端网站目录;
3)创建 old 新文件夹,除了 data , config , uc_client , uc_server 目录以外的文件夹均移动进入 old 新文件夹内,注意 old 文件夹为小写字母;
4)通过 ftp 上传最新的服务端文件,注意分清下载的最新版本编码对应服务器正在使用的编码;
5)关闭站点,关闭服务端 web 服务;
6)将上传完毕解压后的 upload 文件夹内所有文件复制并替换服务端网站目录。
7)上传 utility 目录中的 update.php 文件到 install 目录中,删除 install.php 文件,并确保 install/data 中的 sql 文件完整。
8)执行 https://yourwebsite/install/update.php 按步骤完成升级。
最后尝试访问网站是否有异常,使用管理员登录站点后台,更新缓存。步骤为:后台=>工具=>更新缓存,完成升级。

升级过程中遇到的问题:

1.如果选择“是”您的站点将恢复站点默认风格,则你原网站风格、SEO 和 logo 全部还原为原始模版风格,注意升级选择。

2.在升级后无法登录后台
先确定你的账号在数据库内是否为管理员或者被清空,如无问题再找到根目录下的 uc_server/model 目录里的 admin.php 文件,并搜索代码 $this->cookie_status = 0; 修改为 $this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0; 即可。

3.在升级时候遇到错误 【SELECT skey FROM common_setting WHERE skey=’strongpw’ LIMIT 1】
遇到 SQL 问题可以尝试 SQL 语句执行一下,很明显可以确定到 1146 问题,没有该表。尝试 creat common_setting 表即可,遇到这个问题的,后续也可能会遇到 common_syscache 表缺少 和 common_member 缺失 realname 字段,这里建议核对一下。这里我创建字段时候,选择 varchar(25)

4.在升级的时候遇到错误【请手工执行以下升级语句 XXX】
遇到又是 SQL 问题,先确定是否 SQL 语句执行正常。然后判断逻辑,这里 update.php 其实是官方升级程序,通过改表的方式升级的一个 bug.多年未改,只干了改表的事和新建表的事,改完表后,原来不存在了,但程序里却在对该表进行查询操作,所以会报“表不存在”的错误,导致升级程序终止,不能继续升级。
解决方法,即注释 if(!empty($oldcols[$key]))... ADO PRIMARY KEY ... 代码,刷新页面重新升级即可。

5.第一个步骤提示验证失败,无法进行升级
跳过第一个升级步骤,直接访问 https://yourwebsite/install/update.php?step=prepare 即可。 6.升级后发现许多地方乱码了
请核对字符编码为 UTF-8 简繁 还是 GBK


3、Discuz 开启 Redis

Windows 系统操作

参考 CentOS 操作步骤

CentOS 系统操作

1.查看 php 版本

1
2
3
[root@VM_0_2_centos ~]# php -v
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: igbinary_unserialize in Unknown on line 0 PHP 5.6.40 (cli) (built: Jan 12 2019 09:19:57) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
[root@VM_0_2_centos ~]#

2. 查看 php-redis 扩展包全名

yum list | grep php56w*
如果是其它版本就将修改“56”修改为其正确本版

3. 通过 yum 安装 redis 扩展

yum -y install php56w-pecl-redis.x86_64

4. 重启 httpd 服务

service httpd restart

5. Discuz 需要编译 Config/config_global.php 配置才可以开启,默认是不打开的。

$_config['memory']['redis']['server'] = '127.0.0.1';


4、Discuz 迁移数据至 Flarum

参考以下方法
https://github.com/KeKe12030/DiscuzToFlarum > https://github.com/branchzero/discuz-flarum-adapter > https://github.com/samyex6/discuz-flarum-migration


5、Discuz 迁移数据至 XenForo

DZ 和 XF 均是 BB 代码,存在可迁移可能性

作者

Catooilg

发布于

2020-10-15

更新于

2023-02-05

许可协议

评论