discuz所有下载版本和升级工具,2.0版本

张开发
2026/4/8 13:19:11 15 分钟阅读

分享文章

discuz所有下载版本和升级工具,2.0版本
此文章仅作参考已无效移步到3.0版本下载版本升级UCenter和升级工具使用都在里面Discuz! X3.2 - X3.4 升级至 Discuz! X3.5 详细教程 - 程序发布 - Powered by Discuz!升级3.5版本和升级工具使用Discuz! 每日构建版下载 - DiscuzX 3.x Daily Build Download SiteSC是简体中文TC是繁体中文升级程序下载地址 https://gitee.com/oldhuhu/DiscuzX34235.githttps://gitee.com/oldhuhu/DiscuzX34235/tree/dev/可能你需要其他discuz版本Discuz官方网站 - 开放、连接、共赢下载简体中文就好。其实就是下载一个discuz论坛里面自带版本然后使用工具放在其中进行升级接下来是我安装升级过程每个人遇到的错误情况可能都不一样但思路一样就能解决。升级 discuz! 3.4 升级到 discuz! 3.5 升级版本可能不一样但排查流程差不多。我的环境将Discuz! X3.4 (GBK)升级到X3.5 (UTF-8)系统是LinuxApache和PHP-FPM都在运行PHP版本是7.4.33符合X3.5的要求。升级思路1. 【 先看UCenter是什么版本UCenter目前discuz3.5版本是要UCenter1.7.0版本。先按照官方升级 】1. 确认UC通信正常并下载X3.5最新版压缩包文件https://www.dismall.com/thread-14660-1-1.html2. 备份数据库和程序文件请不要忘记备份 UCenter 数据库和程序文件云服务器快照备份虚拟主机主机管理里备份文件和数据库。3. 进入您的 UCenter 所在目录默认为 论坛根目录/uc_server建立文件夹 old将 UCenter 目录下除 data 目录以外的其他文件夹移动进入 old 目录中。如移动文件中存在包括但不限于 .htaccess 或 .user.ini 等的网站配置文件请不要移动。4. 上传 UCenter 1.7.0 程序压缩包中 upload/uc_server 目录中的文件如使用 FTP 上传请使用二进制模式 如上传时候提示覆盖目录请选择 “是”。5. 下载update_ucenter_adult.zip(17.27 KB, 下载次数: 11944)将压缩包内的 update_ucenter_adult.php 上传到 UCenter 所在目录默认为 uc_server 下的 install 目录并删除 UCenter 所在目录下 data 目录的 upgrade.lock 文件。6. 浏览器访问 UCenter 所在目录下 install 目录下的 update_ucenter_adult.php默认为 论坛网址/uc_server/install/update_ucenter_adult.php 并参照提示进行升级即可。升级时间随着数据的大小和服务器性能而变。总结1. 原论坛根目录 /uc_server 按照 步骤3 结构为 uc_server/olduc_server/data2. 升级包把 uc_server/data 删掉uc_server 内所有文件复制到原论坛根目录/uc_server中。2. 【 有的版本会自带升级工具有的没有。我安装过好几个要么啥也没有要么有目录没文件。所以要下载3.5版本和升级工具升级工具要放在我的网站根目录下。】首先下载到本地你需要先在本地解压一下刚下载的3.5安装包确认有没有最主要的 upload 目录upload目录打开后大概看一下升级工具确认包含最主要的 update_adult.php 、scheme检查完毕。回到含有压缩文件的3.5安装包和升级工具现在需要把压缩包移动到服务器网站根目录内。进入cmd进入cmd黑窗口后输入下面命令scp 刚下载的文件名.zip root服务器:/var/www/html/网站目录/路径可能都不一样自己调整。接下来到服务器进入网站目录看看压缩文件有没有移来大概结构是这样/var/www/html/网站/DZX-SC_UTF8-v3.5-202311192350-20c21e6f.zip/var/www/html/网站/DiscuzX34235-dev.zip接下来是解压# 进入您的网站根目录 cd /var/www/html/网站 #解压 unzip DiscuzX34235-dev.zip # 创建一个临时目录名称可以自定义这里用官方包名方便识别 mkdir DZX3.5_Temp # 如果压缩包在当前目录就移动它 mv DZX-SC_UTF8-v3.5-202311192350-20c21e6f.zip DZX3.5_Temp/ # 进入临时文件夹 cd DZX3.5_Tempunzip DZX-SC_UTF8-v3.5-202311192350-20c21e6f.zip/var/www/html/网站/DZX3.5_Temp/├── LICENSE├── README.md├── readme├── upload -- 我们需要的就是这个文件夹└── utility打开 DZX3.5_Temp/upload 文件其中 dataconfig uc_serverinstall 目录删掉一定不能覆盖原论坛中 dataconfig uc_server install 目录去到原论坛新建old目录原论坛中所有文件都移动到old原论坛根目录只保留 dataconfig installuc_server templatesourceold此时原论坛结构dataconfiginstall uc_server templatesourceoldDZX3.5_TempDiscuzX34235-dev把处理后的 DZX3.5_Temp/upload 目录中所有文件都复制或覆盖到原论坛中。废弃的可能用到也可能用不到开始覆盖操作。现在您可以将 upload 文件夹下的所有内容复制覆盖到上一级的网站根目录。\cp -afv upload/* ../# 回到网站根目录 cd /var/www/html/网站 # 给原论坛 install 改名备用 mv install install_1 # 给解压后的升级工具DiscuzX34235-dev改名为install mv DiscuzX34235-dev install接下来访问 http://网站/install/update_adult.php就可以升级了。如果UCenter没升级。可能会遇到UCenter不满足我的UCenter是1.7.0它偏说我这是1.6.0要求升级。1.6.0和1.7.0都可以升级不影响所以修改# 进入 vi /var/www/html/网站/uc_client/client.php 修改这里 function uc_check_version() { $return uc_api_post(version, check, array()); $data uc_unserialize($return); return is_array($data) ? $data : $return; } 改为 function uc_check_version() { // 直接返回 1.7.0 版本绕过 API 检查 return array(db 1.7.0, app 1.7.0); // 以下是原代码已被注释掉 /* $return uc_api_post(version, check, array()); $data uc_unserialize($return); return is_array($data) ? $data : $return; */ }直接刷新当前页面现在应该显示✔️ 满足。接下来可能会出现数据库错误可能是编码字符之类的错误需要自行手动处理。没有统一处理方式问一下deepseek就能解决。可能会出现一些错误‘提示信息请您先登录服务器给 Discuz! X 目录下的 data/log 目录赋予写权限随后再次运行本文件进行升级。’这些就给权限# 确定是网站根目录下 chmod -R 777 data/log‘提示信息 由于配置文件不可写程序自动修改配置文件失败。由于 config/ 目录不可写入我们已将更新的文件保存到 data/ 目录下请通过 FTP 软件将其转移到 config/ 目录下覆盖源文件。随后 点击此处 继续操作。’这些就给权限# 进入网站目录 cd /var/www/html/网站 # 给 config 目录赋予写入权限 chmod 777 config/ # 同时确保 config 目录下的文件也可写 chmod 666 config/config_global.php chmod 666 config/config_ucenter.php # 如果您有其他配置文件也可以一并设置 chmod 666 config/*.php直接刷新当前页面接下来可能还会出现其中错误‘请您先登录服务器手工删除 data/update.lock 文件再次运行本文件进行升级。’# 删除 update.lock 文件 rm /var/www/html/网站/data/update.lock访问页面会出现乱码可能原本你的网站是用GBK、GB2312编码现在变成UTF-8编码或者是因为升级后的文件与数据库pre_名字不一样导致出现乱码错误是正常的。按照下面步骤排查和修改。# 检查文件编码 file -i source/language/lang_template.php file -i template/default/common/footer.htm # 查看是否有GBK/GB2312编码的文件 find . -name *.php -o -name *.htm -o -name *.html | xargs file -i | grep -E gb2312|gbk|iso-8859我这里显示基本上是charsetiso-8859-1这样的./template/mogu_m1/touch/common/n5_ts.php: text/x-php; charsetiso-8859-1 ./template/mogu_m1/touch/forum/viewthread_reward.htm: text/html; charsetiso-8859-1 ./template/mogu_m1/touch/forum/trade_info.htm: text/html; charsetiso-8859-1从检测结果来看问题已经很明确了大量模板文件仍然是 ISO-8859-1 编码这实际上是 GBK/GB2312 编码被误识别为 ISO-8859-1。需要转换这些文件到 UTF-8。1. 首先备份重要文件tar -czf template_backup_$(date %Y%m%d_%H%M%S).tar.gz ./template/2. 批量转换检测到的文件直接在网站根目录下使用命令执行# 使用iconv转换所有检测到的ISO-8859-1文件 find . -type f \( -name *.php -o -name *.htm -o -name *.html \) -exec sh -c file{} charset$(file -i $file | grep -o charset[^;]* | cut -d -f2) if [ $charset iso-8859-1 ] || [ $charset gbk ] || [ $charset gb2312 ]; then echo 转换: $file (当前编码: $charset) # 尝试不同编码转换 if iconv -f GBK -t UTF-8 $file ${file}.utf8 2/dev/null; then mv ${file}.utf8 $file echo 成功: 使用GBK转换 elif iconv -f GB2312 -t UTF-8 $file ${file}.utf8 2/dev/null; then mv ${file}.utf8 $file echo 成功: 使用GB2312转换 else # 尝试自动检测编码 detected$(enca -L zh_CN $file 2/dev/null | grep -o GB[0-9]*) if [ -n $detected ]; then if iconv -f $detected -t UTF-8 $file ${file}.utf8; then mv ${file}.utf8 $file echo 成功: 使用$detected转换 else echo 失败: 无法确定编码 fi else echo 失败: 未知编码 fi fi fi \;3. 转换完成后清理缓存# 清理Discuz缓存 rm -rf data/cache/* rm -rf data/template/* rm -rf data/threadcache/* # 如果有Redis/Memcached也清理 service redis restart # 或 service memcached restart # 修改文件权限 chmod -R 755 ./ chmod -R 777 data/ config/ uc_server/data/ uc_client/data/4. 更新Discuz模板缓存登录Discuz后台这时候模块和乱码就会变正常了但是可能还会有图片头像问题这应该是UCenter的问题了检查UCenter关联的子网站也就是你这网站是否通信成功。UCenter很可能会出现乱码情况因为UCenter的编码与Discuz!主程序不一致导致的。按照下面步骤修改检查UCenter配置文件编码cd /var/www/html/网站/uc_server/data cat config.inc.php 查看文件内容找到以下两行并修改 define(UC_DBCHARSET, gbk); // 应该改为utf8 define(UC_CHARSET, gbk); // 应该改为utf-8 // 修改 define(UC_DBCHARSET, utf8); define(UC_CHARSET, utf-8);刷新页面就正常了。​升级3.5可能出现的错误’升级表 pre_forum_post 出错,请手工执行以下升级语句后,再重新运行本升级程序‘进终端执行命令mysql -u root -p进入论坛对应的数据库比如USE 数据库名;直接执行ALTER TABLE pre_forum_post CHANGE fid fid mediumint(8) unsigned NOT NULL DEFAULT 0, CHANGE tid tid mediumint(8) unsigned NOT NULL DEFAULT 0, CHANGE first first tinyint(1) NOT NULL DEFAULT 0, CHANGE authorid authorid mediumint(8) unsigned NOT NULL DEFAULT 0, CHANGE dateline dateline int(10) unsigned NOT NULL DEFAULT 0, CHANGE port port smallint(6) unsigned NOT NULL DEFAULT 0, CHANGE invisible invisible tinyint(1) NOT NULL DEFAULT 0, CHANGE anonymous anonymous tinyint(1) NOT NULL DEFAULT 0, CHANGE usesig usesig tinyint(1) NOT NULL DEFAULT 0, CHANGE htmlon htmlon tinyint(1) NOT NULL DEFAULT 0, CHANGE bbcodeoff bbcodeoff tinyint(1) NOT NULL DEFAULT 0, CHANGE smileyoff smileyoff tinyint(1) NOT NULL DEFAULT 0, CHANGE parseurloff parseurloff tinyint(1) NOT NULL DEFAULT 0, CHANGE attachment attachment tinyint(1) NOT NULL DEFAULT 0, CHANGE rate rate smallint(6) NOT NULL DEFAULT 0, CHANGE ratetimes ratetimes tinyint(3) unsigned NOT NULL DEFAULT 0, CHANGE status status int(10) NOT NULL DEFAULT 0, CHANGE comment comment tinyint(1) NOT NULL DEFAULT 0, CHANGE replycredit replycredit int(10) NOT NULL DEFAULT 0, CHANGE position position int(8) unsigned NOT NULL, ADD PRIMARY KEY (pid), ADD UNIQUE INDEX pid (pid), ADD INDEX tid (tid), ADD INDEX position (position);刷新论坛升级页面这时就会出现下面错误’表 forum_post 的主键与系统定义不符系统不支持自动升级请人工处理后再继续‘回到终端执行ALTER TABLE pre_forum_post DROP PRIMARY KEY;刷新论坛升级页面应该继续升级了。可能还有表缺少各种奇怪的错误不要一次性复制看一个错误对应的命令执行ALTER TABLE pre_common_member_profile ADD COLUMN birthcountry varchar(255) NOT NULL DEFAULT ; ALTER TABLE pre_common_member_profile ADD COLUMN residecountry varchar(255) NOT NULL DEFAULT ; ALTER TABLE pre_common_usergroup_field ADD COLUMN allowviewprofile tinyint(1) NOT NULL DEFAULT 1; -- 检查 birthcountry 是否已存在 SELECT * FROM pre_common_member_profile_setting WHERE fieldid birthcountry; -- 如果存在可以删除它 DELETE FROM pre_common_member_profile_setting WHERE fieldid birthcountry; ALTER TABLE pre_common_usergroup_field ADD COLUMN allowavatarupload tinyint(1) NOT NULL DEFAULT 1; ALTER TABLE pre_common_banned ADD COLUMN lowerip varchar(45) NOT NULL DEFAULT , ADD COLUMN upperip varchar(45) NOT NULL DEFAULT ; ALTER TABLE pre_common_session ADD COLUMN ip char(15) NOT NULL DEFAULT ;出生国家和居住国家修改升级文件永久解决修改升级文件打开install/update_adult.php文件搜索 ‘出生国家’‘居住国家’将其改为// 将 INSERT 改为 REPLACEDB::query(REPLACE INTO .DB::table(common_member_profile_setting). VALUES(birthcountry, 1, 0, 0, 出生国家, , 0, 0, 0, 0, 0, 0, 0, select, 0, , )); DB::query(REPLACE INTO .DB::table(common_member_profile_setting). VALUES(residecountry, 1, 0, 0, 居住国家, , 0, 0, 0, 0, 0, 0, 0, select, 0, , ));错误Class table_common_banned does not have a method named delete_by_expiration. PHP Debug检查并修复类文件找到文件source/class/table/table_common_banned.php在类中添加以下方法public function delete_by_expiration($expiration) { return DB::delete($this-_table, DB::field(expiration, $expiration, )); }

更多文章