错误号:3002(aspcms)提示:【加载文件失败】解决方法

代码笔记   2017-06-09 10:35:24

最近刚做的一个自适应平台的企业站,整理好资料、做好漏洞防范后上传到服务器,发现网站的产品详细页面、文章详细页面访问出错,提示:【加载文件失败】,错误号:3002,错误描述:文件无法被打开。这是怎么回事呢?在制作aspcms模板的时候,光的传人我明明把产品详细页面、文章详细页面的模板测试好没有问题的,怎么上传到服务器上会出如此3002错误呢?那再来测试一下本机制作完成后备份的文件吧,一测试才发现,原来本地的网站源码不知道啥时候也出现同样的问题,如下图所示:

看到如此问题,第一个想到的是搜索相关资料,看看有没有好的解决方法,搜索“错误号:3002”,查到如下解决方法(经测试全部无效):

1、登录到后台,界面风格里,默认的模版没有选择,就这么简单。(可能我没有碰到这么简单的解决方法,因为我已经选择了自己制作的模板)

2、aspcms手机访问3002错误(适合没有手机模板用手机访问出现3002错误,在这里我是自适应模板,这个Check_Wap()代码早就删除了)

3、可能是权限问题(这个说的就有点不地道了,一般不会出现这个问题)

网上找不到解决方法,怎么办呢?关键时候还是得靠自己!于是我按以下方法成功解决了aspcms网站系统出现错误号:3002问题,并且找到了根本原因。下面说一下aspcms出现错误号3002的解决方法及步骤(光的传人原创):

1、从网站源码中搜索提示中的文字“加载文件失败”,找到AspCms_Language.asp文件中文字对应的代码“err_06”

2、再从全部网站源码文件中搜索“err_06”,找到AspCms_CommonFun.asp文件中对应的代码片段,如下:

'读取文件内容
Function loadFile(ByVal filePath)
    dim errid,errdes
    On Error Resume Next
    With objStream
        .Type=2
        .Mode=3
        .Open
		if isExistStr(lcase(filePath),"utf") then
		.Charset=Charset
		else
		.Charset=s_Charset
		end if
		'echo Server.MapPath(filePath)&"<br>"
        .LoadFromFile Server.MapPath(filePath)
        If Err Then  errid=err.number:errdes=err.description:Err.Clear:echoErr err_06,errid,errdes
		'die "A"
        .Position=0
        loadFile=.ReadText
        .Close
    End With
End Function

这就找到了控制显示这个错误号的源代码,那怎么解决呢?删除掉包含err_06的这句代码(If Err Then errid=err.number:errdes=err.description:Err.Clear:echoErr err_06,errid,errdes)试试,发现成功解决问题!不再提示错误号3002了!那么本次出现3002错误的根本原因是什么呢?解决了问题还要找明白原因,我光的传人一定要找到答案!

首先我用新作的网站模板放到正常运行没有错误的aspcms系统中,发现模板没有问题,全部正常。那就看来不是模板的问题,再把新加的内容删除掉试试,也没有毛病……

突然眼睛一亮,这个注释掉的一行代码('echo Server.MapPath(filePath)&"<br>")是什么作用呢?去掉注释符号,一测试,终于抓到真凶了!注释掉的代码功能是显示页面调用的模板及文件路径,在产品详情页及文章详情页中,不只是调用了模板文件中对应的模板页面,还调用了一个公共的文件\upload\plug\comment\comment.html,而我为了安全起见,把plug文件夹全部删除(众所周知,aspcms中有的漏洞是因为插件文件夹plug中某些文件产生的,比如跳转后台漏洞等,因为用不到这些插件,所以全部删除)。

知道原因,就好解决了。html文件没有风险,就把\upload\plug\comment\comment.html这个文件恢复了,错误号:3002问题同样也能解决!

综上所述,aspcms出现错误号:3002可以尝试以上步骤(遇到类似的问题也可以参考光的传人的解决方法及步骤,可能会有收获哦),既能解决问题又能找到根本原因。