错误描述:文件无法被打开。这是怎么回事呢?在制作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)&"
"
.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)&"
")是什么作用呢?去掉注释符号,一测试,终于抓到真凶了,注释掉的代码功能是显示页面调用的模板及文件路径,在产品详情页及文章详情页中,不只是调用了模板文件中对应的模板页面,还调用了一个公共的文件\upload\plug\comment\comment.html,而我为了安全起见,把plug文件夹全部删除(众所周知,aspcms中有的漏洞是因为插件文件夹plug中某些文件产生的,比如跳转后台漏洞等,因为用不到这些插件,所以全部删除)。
知道原因,就好解决了。html文件没有风险,就把\upload\plug\comment\comment.html这个文件恢复了,错误号:3002问题同样也能解决!
综上所述,aspcms出现错误号:3002可以尝试以上步骤(遇到类似的问题也可以参考以上解决方法及步骤,可能会有收获哟),既能解决问题又能找到根本原因。