FoosunCMS-数据库设置到虚拟目录外的方法
导航:返回上一页
FoosunCMS的功能很大,但不知道大家有没有遇到这个问题?
现在许多虚拟空间都提供了专用数据库防下目录,但这个目录一般在WEB虚拟目录之外,要用../的方式引用才可以。
为了安全,总想将数据库放在虚拟目录之外,但由于风讯使用相对于虚拟目录的绝对路径,
而使我们无法用 ../date 的方式引用虚拟目录前的文件。本人为此写了一个插件,此文件可将引用地址设置为相对于磁盘的绝对路径引用。就
是将目录转换为F:\xx\xx 的方式。
假设你的网站FTP目录在F:\webroot\myfile
而你的WEB虚拟根目录在myfile下的web文件里。在myfile下还有一个data目录放一个名为data.mdb的数据库文件。
下面为实现方法,
第一步、新建一个文件名为 VirtualPath.asp 文件内容如下:
<% Function VirtualPath(Way,PathName,DelPath) Dim MainPath,ArrayPath,Num,TempPath,i Select Case UCase(Way) Case "MAINPATH" MainPath=Server.MapPath("\")&"\" Case "FILEPATH" MainPath=Request.ServerVariables("PATH_TRANSLATED") Case Else Response.Write "您输入的参数有误, 第一个参数请输入MainPath或FilePath。 使用MainPath将以站点所在的虚拟目录为参照截取; FilePath将以当前文件所在目录为参照截取。" Response.End End Select ArrayPath=Split(MainPath,"\") Num=UBound(ArrayPath) IF DelPath<>"" Then For i=0 to Num IF UCase(ArrayPath(i))= UCase(DelPath) Then Exit For End IF Next IF i>Num Then Response.Write "没有您要截取的目录,请检查参数的正确性。也可设置为空,此时将使用全部目录。" Response.End End IF End IF TempPath=ArrayPath(0) For i=1 to Num-1 IF UCase(ArrayPath(i))<>UCase(DelPath) Then TempPath=TempPath & "\" & ArrayPath(i) Else Exit For End IF Next VirtualPath=TempPath+Replace(PathName,"/","\") End Function %>
第二步、
将新建的文件 VirtualPath.asp 放在风讯的INC目录里。找到风讯INC目录下的 Cls_DB.asp 这个文件
在第一行增加代码
在文件 Cls_DB.asp 里找到代码 Server.MapPath(DataBaseConnectStr) 用下面的代码代替
VirtualPath("mainpath",DataBaseConnectStr,"web")
到现在为止 大功告成。注意 VirtualPath 函数的几个参数,
第一个参数可设置为 mainpath 或filepath 设置为 mainpath 则表示相对于站的WEW虚拟目录
设置为 filepath 则表示相对于VirtualPath.asp文件的所在目录。
第二个参数表示要设置的数库地址
第二个参数表示要截取的目录,例如 F:\webroot\web 如果如下设置的VirtualPath("mainpath","/data/data.mdb","web")
最终产生的路径为 F:\webroot\data\data.mdb
现在你明白了吗?此文件不仅可用于风讯,可以用于任何ASP+Access的程序。