⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgi4.htm

📁 Perl作为一门重要的工程语言
💻 HTM
字号:
<html><!-- #BeginTemplate "/Templates/index.dwt" --><head><meta http-equiv=Content-Type content="text/html; charset=gb_2312-80"><title>ChinaPerl</title>
<LINK rel=stylesheet href=mystyle.css type=text/css>
</head><body>
<table border=0 cellspacing=0 bgcolor=#80FFFF width=100%>
  <tr>
    <td align=left rowspan=2 width=150>
      <div align="center"><img src=image/perl.gif height=85 width="85"></div>
    </td>
    <td align=center><img src=image/perl.gif height=85 width="85"></td>
  </tr><tr>
    <td colspan=2 align=center>&nbsp;</td>
  </tr></table>
<table border=0 width=100% height=400 cellspacing=0 cellpadding=0>
  <tr>
    <td width=20% valign=top bgcolor="#dddddd"> 
<table border=0 width=100% cellpadding=0><tr><td width=5%></td>
          <td width=95%> 
            <p align=center>Perl 5教程<br>
              <a target=_blank href=http://flamephoenix.126.com>by flamephoenix</a><a href="http://perl.yesky.net"><br>
              <font color="red">修订 by RNY<br>
              </font></a>2000-08-30</p>
            <p align=center><a href="index.htm">目录</a></p>
            <p align=center>第一部分 Perl语言</p>
            <p><a href=perl1.htm>第一章 概述</a></p>
            <p><a href=perl2.htm>第二章 简单变量</a></p>
            <p><a href=perl3.htm>第三章 操作符</a></p>
            <p><a href=perl4.htm>第四章 列表和数组变量</a></p>
            <p><a href=perl5.htm>第五章 文件读写</a></p>
            <p><a href=perl6.htm>第六章 模式匹配</a></p>
            <p><a href=perl7.htm>第七章 控制结构</a></p>
            <p><a href=perl8.htm>第八章 子程序</a></p>
            <p><a href=perl9.htm>第九章 关联数组(哈希表)</a></p>
            <p><a href=perl10.htm>第十章 格式化输出</a></p>
            <p><a href=perl11.htm>第十一章 文件系统</a></p>
            <p><a href=perl12.htm>第十二章 引用(指针)</a></p>
            <p><a href=perl13.htm>第十三章 面向对象编程</a></p>
            <p><a href=perl14.htm>第十四章 包和模块</a></p>
            <p><a href=func.htm>附录一 函数集</a></p>
            <p align=center>第二部分 Perl的CGI应用</p>
            <p><a href=cgi1.htm>第一章 cgilib例</a></p>
            <p><a href=cgi2.htm>第二章 动态创建图像</a></p>
            <p><a href=cgi3.htm>第三章 计数器的编写方法</a></p>
            <p><a href=cgi4.htm>第四章 Web Server设置</a></p>
            第五章、...<br></td></tr></table></td>
    <td width=80% valign=top>
      <div align="center"></div>
      <table border=0 width=100% cellpadding=0>
        <tr bgcolor="#00FF80"> 
          <td colspan="2"> 
            <div align="center"> Perl教程 | <a href="perl5manual.zip">下载全文</a> 
              | <a target=_blank href=http://www.turbolinux.com.cn/cgi-bin/linux/wwwthreads.pl?action=list&Board=perl>Perl论坛</a> 
              | <a href="http://perl.yesky.net">推荐站点</a> | 关于我们 </div>
          </td>
        </tr>
        <tr> 
          <td colspan="2"><!-- #BeginEditable "body" --> 
            <p align=center>第四章 设置Web Server以运行CGI</p>
            <p align=center><a target=_blank href=http://flamephoenix.126.com>by 
              flamephoenix</a></p>
            <a href=#1>一、NCSA Server</a><br>
            <a href=#2>二、CERN httpd</a><br>
            <a href=#3>三、Netscape Server</a><br>
            <a href=#4>四、IIS</a><br>
            <br>
            <br>
            <a name=1>一、设置NCSA Server或Apache Server以使用CGI</a><br>
            <p>NCSA Server的CGI1.1只允许用下列两种方式激活用户服务器上的脚本:ScriptAlias指令和AddType指令。这两条指令都放在srm.conf文件中,该文件一般在用户的服务器根目录的conf目录中。</p>
            <p>ScriptAlias指令告诉服务器该目录中的所有文件都是脚本或者是服务器作为CGI文件执行的程序。该方法能保证用户的CGI程序在特定位置。AddType指令允许用户告诉服务器任何具有指定前缀的文件都是可执行文件。如果希望将CGI程序放在服务器中任何地方的话该指令即很有用。</p>
            1、ScriptAlias指令<br>
            <p>ScriptAlias指令位于Server Resource Map文件(srm.conf)中,程序内容例如下:</p>
            <blockquote>DocumentRoot /usr/local/etc/httpd/htdocs<br>
              UserDir public_html<br>
              REdirect /HTTPD/ http://www.server.com/<br>
              Alias /icons/ /usr/local/etc/httpd/icons/<br>
              ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/<br>
              DirectoryIndex index.html index.shtml index.cgi<br>
              IndexOptions FancyIndexing<br>
              AddIcon /icons/movie.gif .mpg .qt<br>
              AddIcon /icons/menu.gif<br>
              AddIcon /icons/blank.xbm<br>
              DefaultIcon /icons/unknown.xbm<br>
              <br>
              IndexIgnore */.??* *~ *# */HEADER* */README*<br>
              DefaultType text/plain<br>
              AccessFileName .htaccess</blockquote>
            <p>srm.conf文件允许用户根据自己系统需要设置HTTP Server。它允许用户告诉服务器用户的主页在什么地方,目录中的哪个文档是索引文档,如果不存在索引文件的话将装载什么图片文件以显示文件的类型,等等。srm.conf及其他配置文件的说明可查阅<a target=_blank href=http://hoohoo.ncsa.uiuc.edu/docs/setup/Configure.html>http://hoohoo.ncsa.uiuc.edu/docs/setup/Configure.html</a>。</p>
            2、AddType指令
            <p>AddType指令是执行CGI程序的另一种方式,它是在srm.conf文件中加入下列行:</p>
            <p>AddType application/x-httpd-cgi.cgi</p>
            <p>在自己的系统中设置了该指令后,任何在服务器控制范围内的扩展名为.cgi的文件都会被作为CGI程序执行而不是作为文本文件阅读。这意味着用户可以在他的个人目录中创建脚本并能执行它。但是如果脚本写得不正确,就可能导致对文件系统、口令文件等的不同类型伤害。</p>
            <p>AddType指令可以扩展为允许扩展名不是.cgi的程序同样被执行。大家经常会看见以.pl(Perl脚本的常见扩展名)或.sh(Bourne 
              Shell脚本的常见扩展名)结尾的脚本。如果想支持其他扩展名的程序,只需简单地将它们加入AddType指令中,如下所示:</p>
            <p>AddType application/x-httpd-cgi .cgi .pl .sh</p>
            3、访问配置文件
            <p>为了支持CGI程序的执行必须多加入一条指令。在Server Root/conf目录中是一个名为access.conf的配置文件。该文件允许用户设置ServerRoot下的哪个目录能够访问的全局限制,甚至允许用户控制哪些站点可以访问这些目录。下面是access.conf文件的一个例子:</p>
            <blockquote>&lt;Directory /usr/local/etc/httpd/cgi-bin&gt;<br>
              Options INdexes Exec CGI<br>
              &lt;/Directory&gt;<br>
              <br>
              &lt;Directory /usr/local/etc/httpd/htdocs&gt;<br>
              Options Indexes FollowSymLinks<br>
              AllowOverride All<br>
              &lt;Limit GET&gt;<br>
              order allow,deny<br>
              allow from all<br>
              &lt;/Limit&gt;<br>
              &lt;/Directory&gt;</blockquote>
            <p>Exec CGI表示允许执行该目录中的CGI脚本。Options Indexes FollowSymLinks表示允许索引(显示某文件夹中的内容)并能够遵循符号链(这就意味着在ServerRoot之外的文件也能被访问)。AllowOverride指令允许用户决定哪个指令可以被目录的.htaccess文件覆盖。<limit GET>中设置了对该目录中允许使用GET方式的限制。在HTTPD中,<limit>部分指令的选项是GET、POST和PUT(目前PUT尚未实现)。order 
              allow,deny一行告诉服务器先找allow行再找deny行。下一行则是告诉服务器允许所有站点访问该目录中的页面。</p>
            <a name=2>二、设置CERN HTTP服务器以使用CGI</a>
            <p>CERN HTTP服务器(也称为W3C HTTP服务器)仅需要编辑/etc/httpd.conf文件即可支持在服务器内使用CGI程序。这个指令类似于NCSA 
              Server使用的指令:</p>
            <p>Exec /url-prefix/* /physical-path/*</p>
            <p>其中/url-prefix/定义了客户能看见的路径,而/physical-path/则是包含脚本的目录的实际路径。</p>
            <a name=3>三、设置Netscape以使用CGI</a>
            <p>首先要启动管理服务器。以root身份登录,并运行/ServerRoot/admserv/start-admin,缺省端口为81。然后启动浏览器连接。在Netscape 
              Admin页面中,单击Select URL Mapping,从弹出窗口中选择Map a URL to a Local Directory。然后单击Select 
              CGI and Server Parsed HTML,从弹出窗口中选择Activate CGI as a File Type。现在即可单击Browse 
              Files并选择欲激活的目录。选择完目录后,单击I'd Like to Activate CGI as a File Type。在ServerRoot中即会看到Conf目录中的obj.conf配置文件中已加入了下列行:</p>
            <p>NameTrans form="/cgi-bin" fn="pfx2dir" dir="/usr/local/web/cgi-bin" 
              name="cgi"</p>
            <p>name=cgi调用了下列行:</p>
            <blockquote>&lt;Object name="cgi"&gt;<br>
              ObjectType fn="force-type" type="magnus-internal/cgi"<br>
              Service fn="send-cgi"<br>
              &lt;/Object&gt;</blockquote>
            <p>它告诉服务器此为一个CGI目录,其中的所有文件都将用Netscape内部提供的CGI执行。</p>
            <a name=4>四、设置IIS以使用CGI</a><br>
            <p>在IIS上运行CGI有十个简单的步骤:</p>
            <blockquote>1)安装Internet Service Manager。<br>
              2)从列表中选择WWW Servive。<br>
              3)选择Properties/Service Properties命令。<br>
              4)单击Directories标签。<br>
              5)单击Add按钮。<br>
              6)指定自己的cgi-bin目录的完整路径(例如,c:\webfiles\scripts)。<br>
              7)使用/scripts作为目录别名。<br>
              8)选中Execute检查框。<br>
              9)单击OK保存修改。<br>
              10)将自己的CGI程序放在c:\webfiles\scripts中并在HTML中作为/scripts/someprogram.exe引用。</blockquote>
            <p>在使用IIS时经常出现的问题与设置IIS没太大关系而是和基本的操作系统功能有很大关系。IIS与底层的操作系统联系很紧密,即使已经设置为服务,Web服务器基本上是作为应用程序来运行的,通常只有一个用户安全环境,Web服务器能访问到的与Web服务器下的CGI程序能访问到的内容几乎没什么不同(这类似于UNIX环境,在UNIX环境下,很重要的一点就是不要将Web服务器作为root来运行)。IIS的工作很像一个扩展的文件系统。每个用户有自己的权限。CGI程序在执行该程序的访问者的用户安全环境中运行。对于未验证的页面,这就是缺省提供的“无名的”用户,而对验证的页面,安全环境就像用户位于服务器控制台前手工运行该程序一样。使大部分初学者犯错误的正是这种额外的安全层次。</p>
            <p>IIS管理员最常抱怨的一个错误信息是"The Application misbehaved by not returning 
              a complete set of headers"。错误消息接下来列出服务器接收到的头标--一般是个空的清单。这种讨厌的不明确的错误有一个直接的原因,不过这个原因与CGI脚本的错误操作没有一点关系。如果因为某种原因某个CGI脚本不能运行,它就不能产生任何头标。IIS将错误的责任推在脚本身上,实际上却几乎总是服务器管理员的错。CGI脚本需要访问系统DLLs、系统的临时目录以及它们使用的任何其他资源。如果该脚本是按静态约束进行编译的,那么除非所有组件均可用,否则操作系统不会装载该程序的。如果系统管理员锁紧了安全级使得脚本不能装载它的DLLs,那么脚本就不能运行。当脚本不能运行时,它也就不产生任何头标了(或者其他的输入),从而导致出现本段开头引用的错误消息。</p>
            <p>如果管理员是在一个安全目录中运行脚本的(安全目录即是一个需要单独用户验证才能访问的目录),那么每个可能访问系统的用户都必须有下列安全权限。如果是无名地运行脚本,那么只有无名用户需要这些权限:</p>
            <blockquote>.对%systemroot%system(一般为c:\winnt\system)的读权限<br>
              .对%systemroot%system32(一般为c:\winnt\system32)的读权限<br>
              .对临时目录(一般为c:\temp)的修改权限<br>
              .对Web根的读权限<br>
              .对CGI目录的修改权限</blockquote>
            <p>如果在有了这些访问权限之后仍然出问题,可以进一步临时给特殊的用户帐号Everyone赋予这些目录的修改权限。如果问题解决了,就可以认定是少了一个步骤(或一个用户)。纠正问题然后慢慢回收权限直至服务器重新安全。</p>
            <p align=center><a href=cgi3.htm>上一章</a> 下一章 <a href=index.htm>目录</a></p>
            <p align=center>&nbsp; </p>
            <!-- #EndEditable --></td>
        </tr>
      </table>
    </td></tr></table></body><!-- #EndTemplate --></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -