windows xp下使apache支持cgi,两种方式:C,perl

本文深入探讨了如何在Apache服务器上配置和使用CGI(Common Gateway Interface),包括选择C或Perl作为CGI语言,以及如何在服务器配置文件中加载CGI模块、设置运行目录和权限。通过提供具体的示例代码,展示了如何编写简单的CGI程序,并解释了CGI与传统应用程序的区别。此外,还介绍了如何将Perl用于CGI实现,以及如何在服务器上安装Perl并配置CGI脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直听说apache的cgi比php运行要快,c比php快这个是很对的,perl写的html比较古老。具体有什么优势,以后再看。

现在我想要用cgi,怎么办?

有两种方式,用c还是perl,反正现在都不知道,两种都试试。

我的服务器是apache。我要使用cgi。就要找是否已经装载了cgi模块。

找到httpd.conf里面的

LoadModule cgi_module modules/mod_cgi.so                //一定要加载

然后设置cgi运行目录,当然可以直接指定一个目录使其php,cgi都能用,但现在才开始,纯粹点。

ScriptAlias /cgi-bin/ "D:/Apache2.2/cgi-bin/"                             这个一般文件里有了,自己改下地址

这句话是说在根目录下的cgi-bin这个目录就是访问的D:/Apache2.2/cgi-bin/里面的文件。

下面设置cgi目录的权限,能运行的cgi程序的后缀名可以不在这儿设置,在这儿设置就只在这个文件夹下用这几个后缀名了。重要的是要使这个目录能运行cgi程序,加入Options +ExecCGI

<Directory "D:/Apache2.2/cgi-bin">
   AllowOverride Options
   Order allow,deny
   Allow from ALL
   Options +ExecCGI
 #  AddHandler cgi-script .cgi .pl .exe
</Directory>

在<IfModule mime_module>里面加入下面的,所有能运行的文件后缀都放这里,找着方便。

AddHandler cgi-script .exe .pl .cgi

 

后面就是写cgi,写一个cgi要运行,如果是c写的编译成exe后,就不需要解析器来解析了,应该可以直接用。但我用ie后发现老是会下载下来,后来发现是迅雷监视了浏览器,一出现exe文件就跳出下载框。后来直接编译成cgi为后缀的文件了。写cgi的格式查了下apache手册,上面说主要是两个问题,1、最开始要输入你想显示的mime类型,这里一般是html,有时候也可能是一张图片,第一点很重要没有这个页面显示错误;2、显示格式最好是html格式或者网页能显示的格式,写成html最好,简单点直接输出字符串也行,反正前面一点已经告诉浏览器输出的是一个html了,也能输出了。

用c写的cgi例子  保存为a.cgi,放到D:/apache2.2/cgi-bin/里面:

#include <stdio.h>
int main(){
 printf("content-type:text/html/n/n");
 printf("<html>");
 printf("<head><title>welcome</title></head><body>");
 printf("hello,boy!<br />");
 printf("</body><html>");
}

使用http://localhost/cgi-bin/a.cgi  访问得到

hello,boy!

c里面不能在写html的时候使用换行,只能一行一行的输出,所以还是很麻烦的。

*******************************************************************************************

使用perl写cgi

这个和以往的cgi实现方式应该还是有些不一样,以往的方式是先安装perl,然后用perl去生成一个apache的模块,加载到apache中,然后就能用了。现在简单点实现,由于前面已经加载了cgi模块(见前面),所以apache能使用cgi的方式来接入perl。不过这里就需要有个perl解析器了,因为perl的脚本和c编译后的不一样,c编译后的是应用程序了,但perl的还是脚本。所以在编写perl的cgi的时候一般会先告诉脚本是使用哪里的解析器来解析的。这里就需要装perl软件,自己去下一个吧。我的装在d盘的。我的是#!D:/Perl/bin/perl

其中的perl.exe在D:/Perl/bin/里面,所以这样写。当然还可以写成#!D:/Perl/bin/perl.exe

两种方式我都试了,都可以。perl支持mysql,在cmd里面ppm install DBD::mysql

下面是perl写的一个脚本保存为a.pl到d:/apache2.2/cgi-bin/:

#!D:/Perl/bin/perl.exe
print "Content-type:text/html;charset=utf-8/n/n";
print "<html>
<head>
</head>
 <body>
 <font color='red'>hello boy!!</font><br />
 <input type='button' value='按下去。。。' onclick='alert(/"你按过了!!/")' />
 </body>
<html>";

http://localhost/cgi-bin/a.pl运行结果:

hello boy!!

发现和c写的区别了吧。这个可以换行写,不影响显示。第一次搞cgi就到这里吧,好不容易一个周末呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值