什么是Windows IIS2003上perl CGI中的$ ENV {DOCUMENT_ROOT}等效项

问题描述

| 我正在将一个perl cgi脚本从linux迁移到Windows IIS Server 2003,并发现没有“ 0”环境变量。 一些谷歌搜索建议我可以通过从
$0
cwd
的末尾剥离内容来破解它,但是获取站点根目录应该是常见的任务。有更好的或标准的方法吗?     

解决方法

        IIS并没有以与IIS相同的方式真正具有文档根目录的概念,因为每个应用程序或多或少都是独立且独立的。对于任何请求,ѭ3通常都是构建的良好基础,它设置为
PATH_INFO
中设置的处理组件的物理路径名,通常您可以使用一点File :: Spec来到达文件系统位置。导航。 还有
SCRIPT_TRANSLATED
SCRIPT_NAME
,可能更接近您的需求。 SCRIPT_NAME本质上是脚本的主机绝对URL(减去方案,主机和端口),“ 5”是对应的物理文件。对于某些任务,我使用the8ѭ和
URI::file
类以及用于操纵它们的方法。 仅当您的请求由提供文件的同一应用程序处理时,这些才有用。但是,它们确实允许您派生有效的URL。如果您需要用于根应用程序的文件系统,一个文件系统映射到\“ / \”,并且您的脚本不在同一根应用程序中,则您可能必须对IIS元数据库进行某些访问(本质上相当于“ 10”)和朋友,但可以查询)以找出答案。     ,        您可以使用简单的CGI脚本打印出所有ENV变量,如下所示:
#!/usr/bin/perl
print \"Content-type: text/html\\n\\n\";
foreach $key (keys %ENV) {
    print \"$key --> $ENV{$key}<br>\";
} 
从该输出中,您正在寻找的变量应该是半显而易见的。