Apache配置CGI支持C

Common Gateway Interface简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端 HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子: 现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后CGI程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样,整个过程结束

步骤:
1.安装Apache
2.然后配置一下httpd.conf以支持C语言编写的CGI
配置Apache

1
2
3
4
5
6
7
8
9
10
ScriptAlias /cgi-bin/ "E:/apache2/Apache2/cgi-bin/"

<Directory "E:/apache2/Apache2/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

AddHandler cgi-script .exe .pl .cgi

保存文件,重启Apache服务器
说明:
1."E:/apache2/Apache2/cgi-bin/"为你安装的Apache下的cgi-bin目录哦,父目录与子目录之间用/分开
2.至于AddHandler好象是安装exe,pl,cgi文件后缀驱动,但是我在下面执行正确编写并编译好的exe文件改成诸如没有文件后缀、文件后缀为任意类型时也正确
写一个HelloWorld.ccgi,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main(void)
{
printf("\n"); // 这个必须有
printf("Hello, World!\n");
return 0;
}

#include <stdio.h>
int main(void)
{
printf("Content-Type:text/html; charset=gb2312;\n\n");
printf("<html>");
printf("<head><title>乘法结果</title></head>\n<body>\n")
printf("<h3>乘法结果</h3>\n");
printf("</body>\n</html>");
return 0;
}

编译一下,生成了HelloWorld.exe,复制到Apachecgi-bin目录下
注意:
1)用VC编译可以保证正常运行,用Turboc2编译会出现错误,无法执行,原因可能是后者为16位编译器,前者为32位编译器的缘故。
2)必须首先输出一个空行,如果不输出该空行,则会出现题为"Internal Server Error"的错误,所以第一行的printf("\n");这个必须有
运行程序时,打开网页,在地址栏中输入:
http://127.0.0.1/cgi-bin/helloworld.cgi
浏览网页看结果
打赏

刘伟 wechat
欢迎您扫一扫上面的微信公众号( 或者搜索:darrenliuwei )订阅
如果觉得本文对您有启发,可以随意打赏一点鼓励我继续更新!