网络通信 频道

内外双修 解决Discuz论坛经典故障

  【IT168 专稿】论坛这个网络交流平台是中小企业最常用的服务之一,身为中小企业的网管势必要掌握搭建论坛和维护论坛的方法,当然由于ASP类论坛在安全性方面存在着先天不足,所以现在越来越多的企业开始将目光投入到基于PHP语言建立的论坛程序。在众多PHP论坛中Discuz!以免费和功能强大而脱颖而出,然而很多论坛管理者在安装和使用Discuz!论坛过程中却遇到了或多或少的麻烦,这些顽疾让他们不得不放弃论坛的搭建,实际上很多难题都可以通过巧妙简单的方法解决,解决经典故障后接下来的工作将一气呵成,今天就让笔者为各位IT168读者介绍如何内外双修解决论坛的经典故障。

  一,安装Discuz!空白页面的故障:

  很多用户在安装Discuz!论坛特别是最新版6.1时安装工作一切顺利,包括最后的安装成功提示信息都有,但是就是无法顺利访问建立的论坛,主要症状就是安装论坛完毕后访问首页地址没有任何出错信息,页面也可以顺利的全部加载完毕,但是出现的问题却是非常奇怪的,论坛首页任何信息都没有显示出来,整个页面是一个空白页,不管你如何刷新都没有任何改变,查看该页面的源代码和正常情况下没有两样。(如图1)

  很多读者都因为无法解决此问题而放弃了Discuz!论坛的安装,实际上经过笔者的多次测试和实际安装发现这种安装完毕后首页出现空白显示的故障主要因以下三种错误操作和错误设置造成。下面我们来一一讲解。

  (1)传输代码文件模式错误:

  一般来说企业建立网站或论坛大部分都通过租用空间的形式完成,网络管理员通过FTP将自己的站点程序上传到空间提供商处,很少有人使用IE浏览器传输,基本上都是通过专业的FTP传输工具完成,例如flashfxp或ftprush等。而传输时很少考虑传输文件模式的类别,默认是由这些FTP传输工具自动选择传输模式的,然而对于论坛程序来说有些时候FTP传输工具选择传输模式自动化反而会帮倒忙,因此我们需要在指定传输模式类别后再上传论坛建立程序,这样可以有效避免上述首页空白显示问题的发生。笔者以FLASHFXP为例进行介绍如何修改文件传输模式。

  第一步:打开FLASHFXP主界面,然后选择菜单中的“options”(选项)->“preferences”(参数)。(如图2)

  第二步:接下来在参数设置窗口中选择transfer(传输)选项,在左边的传输模式(transfer mode)处将其从默认的AUTO自动修改为binary二进制传输,确定后使修改生效。(如图3)

  第三步:之后我们再次登录FTP空间重新传输论坛程序,然后再次执行安装工作后就可以顺利的解决上面提到的首页空白的经典故障。

  小提示:

  另外还有一种情况会造成首页空白的故障,那就是心急的网络管理员开启多个FTP传输客户端,一起传输,这样也容易因为互相冲突造成程序上传有问题而首页空白。

  (2)清理删除缓存文件让首页完好如初:

  还有的时候安装完毕首页空白可能是因为在安装过程中生成的缓存文件在搞鬼,我们只需要登录到FTP空间,然后找到论坛目录下的forumdata,然后将其下的forumdata/cache和forumdata/templates两个文件夹里的文件全部删除即可,这两个文件存储的正是捣鬼的缓存文件,需要提醒一点的是我们要删除这两个目录下的文件,不要连目录一起删除,而且很可能带来重新安装的麻烦。(如图4)

  (3)安装论坛手下留情:

  根据笔者测试和解决问题经验还有一种可能造成安装完毕首页空白,一种是安装完毕后马上点“进入后台”或“进入前台”按钮,可能由于点击速度过快造成首页内容还没有生成就访问了。所以我们在安装论坛时一定要手下留情,放慢速度不要马上点相关按钮,等待一会后再访问论坛首页。

  小结——通过本文介绍的这三个方法我们就可以有效的解决安装Discuz!论坛后访问论坛首页内容是空白的问题。(如图5)

  二,登录论坛自动跳转为“游客”的故障:

  笔者曾经遇到过不止一次安装论坛后可以顺利访问也可以输入相关帐号与密码登录,但是只要一点击其他链接或者等待论坛登录自动跳转后马上回到“游客”用户组。(如图6)

  说白了这个故障让论坛管理者无法管理论坛,配置相关参数,也无法让普通会员顺利登录发送相关帖子,如果这个故障存在那么论坛将无法顺利使用。(如图7)

  为了解决这个经典故障笔者也反复测试了多个站点,重新安装部署了多次论坛程序,最后才发现了问题关键。这种论坛登录后自动跳转为“游客”的问题都是由域名解析错误造成的。

  (1)故障现象:

  对于大部分论坛管理者来说都是通过租用空间方式建立,一般来说空间提供商会给我们一个域名或地址,这里我们假定这个地址为A,而企业一般都会找万网或者新网申请一个合适的域名B,然后将这个B域名指向A域名,从而实现论坛访问的功能。而登录论坛后自动跳转为游客的故障主要发生在用户通过B这个域名访问论坛时,如果直接在地址处输入A域名访问论坛并登录并不会出现自动跳转为游客的故障。(如图8)

  (2)故障原因:

  正是因为AB域名的不同而造成这个登录后自动退出为游客的问题,众所周知论坛登录需要用到COOKIE这个功能,COOKIE中保存的是用户访问论坛的帐户信息从而方便下次访问不用再输入相关帐户与密码。但是COOKIE中保存的信息是与域名相对应的,如果域名不同那么COOKIE程序是不能够通用的。因此这个故障的本质就是论坛COOKIE只保存了A域名对应的信息,所以我们用A访问论坛时可以顺利登录没有任何问题;而由于COOKIE与B域名没有绑定,所以当我们用B域名访问论坛后不管你怎么输入登录帐户信息都不会将其以COOKIE的形式保存。

  (3)解决故障:

  我们有两种方法来解决此问题,第一是在进行域名指向URL跳转时采取“不隐藏转发”方式跳转,这样当我们访问B域名时会自动将地址解析为A域名,然后就可以顺利的进行论坛登录了。关于此参数的修改我们可以通过域名管理界面完成,在域名管理界面中将URL转发方式设置为“不隐藏转发”,例如万网管理界面中“方式”处设置参数为“1”即可,保存后我们就能够有效解决登录故障了。(如图9)

  如果企业A域名是以IP地址的形式存在,那么我们可以直接在B域名管理界面中通过A记录将B域名指向A对应的IP地址即可,这样就可以同时解决通过两个地址访问论坛无法登录的问题。

  小提示:

  什么是A记录, A(Address)记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。

  第二个办法则是通过编辑Discuz!的配置文件强制其绑定的域名,这样修改了COOKIE绑定域名为B后我们就可以顺利的通过B域名来访问论坛并正常登录了,不过设置完毕后如果我们使用A域名访问则又会出现无法登录的故障。

  小提示:

  由于我们一次只能够设置Discuz!论坛的COOKIE绑定一个域名,所以通过方法二是不能够保证用两个域名都可以顺利登录而不自动跳转成游客权限。

  修改论坛COOKIE绑定的域名方法很简单,首先我们进入到论坛程序目录,找到名为config.inc.php的文件,用记事本将其打开,然后找到$cookiedomain = ''的信息,这个''中的内容就是Discuz!论坛中COOKIE的作用域,假设我们的B域名为www.xxx.com,那么将config.inc.php文件中COOKIE作用域语句修改为$cookiedomain = '.xxx.com'即可,注意前面的www不用填写,而XXX前的“.”是必须的。保存退出后我们就可以顺利使用www.xxx.com访问论坛并成功登录了。(如图10)

  小提示:

  Discuz!无法支持论坛与多个优异域名的COOKIE绑定功能,所以我们只能够设置绑定一个域名,如果要绑定多个二级域名Discuz!是可以实现的,因为我们设置作用域时的格式是“.xxx.com”,不管是AAA.xxx.com还是BBB.xxx.com都是可以生效的。

  如果通过上述两个设置依然无法解决实际问题的话,我们就需要查看数据库中相关数据表的设置是否准确了,我们可以通过PHPMYADMIN工具访问数据库,找到cdb_settings这个数据表,然后再找到里面名为styleid的参数,将其修改为1,保存后就可以彻底解决登录问题了。(如图11)

  小提示:

  如果在用户登录论坛时自动跳转并不是指向游客组而是出现诸如Illegal request提示的话,很多时候都是因为Discuz!设置了整合联动功能造成的,例如笔者就曾经在Discuz!上错误的设置了与Shopex平台联动的参数,而出现Illegal request提示,我们正确配置或取消联动功能即可解决实际问题。

  三,总结:

  Discuz!作为国内PHP论坛的龙头他的应用范围是广泛的,虽然该程序是免费下载和使用的,但是安装与维护服务是收费的,这也造成了很多用户通过Discuz!建立论坛遇到故障问题后无处寻医,笔者希望通过本文能够真正帮助那些Discuz!免费用户建立论坛并更好的使用论坛。

0
相关文章