折腾discuzx无法登陆前后台的问题记录

0

最近做项目验收,准备验收资料时看他们给的操作说明书,发现有个项目居然还是用的 phpcms+discuzx 做的,特意研究了一下discuzx的程序,发现自己还有个站点也是disuczx做的,最近一次折腾是升级了 disuczX 3.4 版本。

但现在发现那个站点经过改动以后登录不上了,也不知道是什么原因,只能通过QQ登录登录上去,后台、前台用户都登录不了。

排查了一下原因,好像是之前迁移数据库的时候没有把配置修改完整,所以登录不上后台。

在 discuz 程序做环境迁移的的时候,需要修改数据库配置的话,需要修改三个文件下面的数据库配置。

/config/config_global.php

/config/config_ucenter.php

/uc_server/data/config.inc.php

可能是之前 discuz 架构设计的可以把 ucenter 的用户与站点单独分离开,所以搞了多个配置文件,每次迁移服务器都会忘记修改其中某个文件导致。一次忘改就出现各种各样的登录问题。

解决发了discuzx 的数据库配置修改,发现还是没有办法登录后台和前台,应该是需要清理下缓存文件,但是discuzx 的缓存机制比较特殊,找不到缓存文件在哪放着,需要登录后台才能清理缓存,现在后台登录不了,就没法清理缓存。

0

找到了discuzx 的急救工具箱的文件。传上去以后尝试清理了缓存,这个工具箱也有些年头了,现在 php 7.2 好像不太兼容,但清理缓存貌似还能用。清理 discuzx 的缓存就能登录后台,再彻底清理几次后台的缓存,可以愉快的修改配置。

Discuz! X3版本Tools急诊箱工具正式发布. https://www.discuz.net/forum.php?mod=viewthread&tid=3533179

最新的急救箱链接:
https://discuz.dismall.com/forum.php?mod=viewthread&tid=3235035

顺带在论坛找到一个清理历史bug 导致的一直显示有些空白内容在等待审核的问题的补丁,打上以后试了一下也没成功。

解决历史审核信息问题:https://www.discuz.net/thread-2176341-1-1.html

22240538vsj7cc3e39rdk7.jpg.thumb.jpg

把这些问题记录一下,也许以后项目维护会用的到。

重置完密码以后,也许你还会遇到提示“密码错误次数过多,请 15 分钟后重新登陆”,的情况,可以通过数据清理登录记录来登录后台。

1、数据库中删除相关记录

用户每次登录错误的时候,会记录在 pre_common_failedlogin 表里,所以只要自己在删除这个表中的错误记录就行了。可以通过 phpMyAdmin 删除,或者执行 SQL :

代码如下:

DELETE FROM pre_common_failedlogin where ip=’IP地址’;
上边方法是前台密码错过过多,如果是 Ucenter 被锁的话,那么还需要到另外一个表 pre_ucenter_failedlogins 进行删除IP的工作。

代码如下:

DELETE FROM pre_ucenter_failedlogins where ip=’IP地址’;

2、修改程序实现(一般不用这个方法,删除数据库IP即可解决问题)
打开 include 目录下的 misc.func.php,找到代码如下:

$login[‘count’] < 5

将代码中的5修改一下。因为这是程序的一个安全机制,所以请不要设置的太大。
这是临时解决登录的方法,推荐前者,后者请慎重使用或者不使用。