world wide web的最大好处之一是能与internet上的用户交互,以获得和提供不同的信息。由于这种信息的动态本质,仅有静态的html页面是不够的,还需要有一种方法来向访问web站点以获取所需信息的用户显示动态信息。cgi能满足你这种对动态信息的需求。cgi代表commongateway interface(公共网关接口)。在www网站中的反馈表单、e-mail表单、数据库查询接口、web页面计数器、搜索工具,聊天室、电子论坛等常见的应用都是cgi程序。
cgi程序又叫做cgi脚本(script),几乎任何一种编程语言都可以用来写cgi脚本,常用的有c/c++、visual basic、perl、unixshell等,其中功能最强大、应用最广的是perl。用perl写的cgi脚本叫perlscript,一般以.pl为后缀。
cgi程序是驻留于网络服务器上的,目前非常流行的网络服务器平台是windows nt4.0,采用的服务器软件是iis(internetinformation server),windows nt+iis就是当前很流行的web服务器环境。
本文主要讨论在windows nt上调试和实现cgi/ perl script。
因为cgi程序能实现客户端与服务器之间的信息交流,这同时也带来了安全性问题。为了便于统一管理,一般将cgi脚本放置于系统的cgi-bin目录下,此目录对于普通用户只有调用执行的权限,目录权限由服务器管理员设置。在windwos nt+iis系统中,cgi-bin目录一般在安装iis时就自动建立了,它的位置一般在c:inetpubwwwrootwelcomecgi-bin,这个目录是在internetinformation sevice manager(iis的一个功能模块)中是已经登记好的,如果没有这个目录,就需进行手工登记,可按如下步骤进行:
·启动internet service manager。
·选择www信息发布服务,双击或使用鼠标右键选择serviceproperties。
·在www信息发布服务属性(publishing service properties)
窗口中选择directories子窗口。
·用鼠标点击add按钮,打开目录属性(directory properties)
对话框。
·在目录属性(directory properties)对话框的第一栏directory用键盘输入需建立目录映射的目录路径(c:inetpubwwwrootwelcomecgi-bin),选中visual directory在别名(alias)中键入cgi-bin,并选中access中的execute复选框,最后确定(ok)。
目录映射建立好以后,将写好的script.pl脚本复制到:
inetpubwwwrootwelcomeegi-bin目录中,这样当使用http://web.site.name/cgi-bin/script.pl的url时,就可以在浏览器上调用服务器http://web.site.name上的c:inetpubwwwrootwelcomecgi-bin目录下的script.pl脚本。
因为script.pl是由perl语言写成的,还必须在windows nt上安装perl语言脚本解释器perl.exe,这是一个免费的软件包,可以从网站http://www.perl.com处下载,下载过来的是一个自解压的压缩文件,将文件解压缩后运行其中的install.bat文件,会自动将perl解释器安装到c:perl目录下,perl.exe就在c:perlbin目录下。这时对注册表的修改应已自动完成,但有时也可能需要手工修改建立脚本映射。方法如下:
·打开windows nt中的regedt32.exe文件。
·进入注册表目录hkey-local-machinesystemcurrentcontrolsetservicesw3svcparametersscriptmap,查看是否有键值.pl:reg_sz:c:perlbinpinperl.exe%s%s,如果没有则需手工添加。打开regedt32.exe的edit菜单,选择add valve,在addvalve对话框中的数据类型选为reg_sz,并输入需建立脚本映射的文件后缀.pl,在提示输入键值字符串时输入c:perlbinperl.exe%s%s,确定后重新启动www服务器即可。
cgi脚本直接拷入cgi-bin目录即可,需要注意的一点是,在perl脚本的第一行必须注明perl解释器的位置,有时还需加上脚本的名称(如#!/perl/bin/perl.exe script.pl)。