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

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")
才能够被运行



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

...全文
59 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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 方法不检查返回的路径是否正确或在服务器上是否存在。
  • 打赏
  • 举报
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2005-06-10 04:36
社区公告
暂无公告