请教菜鸟类型问题???急急!!

coollele 2005-06-10 04:36:37
ASP + ACCESS 程序

我有两个目录,/cgi-bin 放置 ASP程序及打开数据库文件代码
/data 放置 ACCESS数据库文件 1.mdb

我在/cgi-bin目录里的用config.ASP文件中写入以下代码
<%dim conn
dim dbpath
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("../data/db1.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath &"; PWD="
%>
然后在index.asp文件中插入上面这个文件
...
<!--#include file="config.inc" -->
...
在win2000服务器的IIS 上运行没有问题

但是:如果在win2003的IIS上运行就提示
Server.MapPath() 错误 'ASP 0175 : 80004005'
不允许的 Path 字符
/szphototech/cgi-bin/config.inc,行 4
在 MapPath 的 Path 参数中不允许字符 '..'。

我必需将/data 目录放入/cgi-bin里面才行 ,然后将代码改为
DBPath = Server.MapPath("data/db1.mdb")
才能够被运行



请问这是为什么?难道一定要取绝对路径才行吗?

...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangwm 2005-06-10
  • 打赏
  • 举报
回复
win2003的要在配置中“启用父路径”
zjg04945 2005-06-10
  • 打赏
  • 举报
回复
server.mapPath是获取网站根目录的绝对路径,如当前web站点的根目录是C:\wwwroot,则输出server.mapPath的值就为“c:\wwwroot”,基于此,楼主的写法server.mapPath("../data/db1.mdb"),事实上指向的是c:\data\db1.mdb,显然是错误的。因此,强烈建议书写时使用绝对路径,即server.mapPath("\data\db1.mdb")。
Hotlion 2005-06-10
  • 打赏
  • 举报
回复
server.mapPath是获取网站根目录的绝对路径,如当前web站点的根目录是C:\wwwroot,则输出server.mapPath的值就为“c:\wwwroot”,基于此,楼主的写法server.mapPath("../data/db1.mdb"),事实上指向的是c:\data\db1.mdb,显然是错误的。因此,强烈建议书写时使用绝对路径,即server.mapPath("\data\db1.mdb")。
masm_silly 2005-06-10
  • 打赏
  • 举报
回复
2楼说得对,Server.MapPath中的地址如果以"/"开头,表示跟目录下的路径。
如果你的数据库文件就是在根目录下data目录那么用"/data/db1.mdb"就可以了。
acheng 2005-06-10
  • 打赏
  • 举报
回复
Request.ServerVariables("APPL_PHYSICAL_PATH") : <%=Request.ServerVariables("APPL_PHYSICAL_PATH")%><p>
Request.ServerVariables("PATH_INFO") : <%=Request.ServerVariables("PATH_INFO")%><p>
Request.ServerVariables("SCRIPT_NAME") : <%=Request.ServerVariables("SCRIPT_NAME")%><p>
Request.ServerVariables("URL") : <%=Request.ServerVariables("URL")%><p>
Request.ServerVariables("PATH_TRANSLATED") : <%=Request.ServerVariables("PATH_TRANSLATED")%><hr>
上面都是通过ServerVariables提取得出的值,下面就来运用mapath把一个虚拟地址转变为实际的物理地址。<p>
Server.MapPath(Request.ServerVariables("URL")) :<%=Server.MapPath(Request.ServerVariables("URL"))%><p>
或者自己随便写个不存在的路径,同样能够执行<p>
Server.MapPath("cnbruce.asp") : <%=Server.MapPath("cnbruce.asp")%><p>
再来个“/”的<p>
Server.MapPath("/cnbruce.asp") : <%=Server.MapPath("/cnbruce.asp")%><br>
Server.MapPath("\cnbruce.asp") : <%=Server.MapPath("\cnbruce.asp")%><p>
你会发现物理地址转变到IIS默认根目录下面了。
这就是如6to23之类的站点mappath的问题所在。还是虚拟主机好,即使是根,也还是自己站点的默认存放节点根。
acheng 2005-06-10
  • 打赏
  • 举报
回复
Path 指定要映射物理目录的相对或虚拟路径。若 Path 以一个正斜杠 (/) 或反斜杠 (\) 开始,则 MapPath 方法返回路径时将 Path 视为完整的虚拟路径。若 Path 不是以斜杠开始,则 MapPath 方法返回同本文件中已有的路径相对的路径。这里需要注意的是 MapPath 方法不检查返回的路径是否正确或在服务器上是否存在。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧