标题:apache, mod_cgi 出处:Felix021 时间:Thu, 07 Jan 2010 20:40:58 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?1810 内容: 编译apache的时候默认应该是有mod_cgi的,如果不确定,可以加上--enable_cgi。 在httpd.conf里面增加(或修改,因为可能已经有这个东西了):引用 ScriptAlias /cgi-bin/ /某路径/cgi-bin/ 如果你修改了“某路径”,那么后面对应的Directory一节也应该对应修改引用 AllowOverride None Options FollowSymLinks #如果不放心,这里还可以加上一个ExecCgi选项。 Order allow,deny Allow from all 下面是一个简单的C编写的cgi程序,gcc -o printall simple_cgi.c,把printall放在cgi-bin目录下面。然后访问:http://localhost/cgi-bin/printall,可以看到输出。特别注意一下,cgi不仅要打HTTP实体,还要打HTTP头信息。如果你实在懒得写,在实体前面加上一个回车就行了:) 否则你会看到apache的error_log里输出诸如"malformed header from script. Bad header="这样的错误信息。 #include #include extern char ** environ; int main () { int i; puts("Content-Type: text/plain\n\n"); for (i = 0; environ[i] != NULL; i++) { printf ("%s\n", environ[i]); } if (strncmp("POST", getenv("REQUEST_METHOD"), 4) == 0) { char buf[1025]; while (1) { fgets(buf, 1024, stdin); printf( "%s", buf); if (feof(stdin)) { break; } } } return 0; } 特别点出一下,GET请求的query_string是在environ["QUERY_STRING"]里面,而POST请求的输入,是从stdin中读取。 Generated by Bo-blog 2.1.0