更多精彩内容,请见:http://www.16boke.com
by zxy,qq群:168424095
Apache中httpd.conf的配置
(1)ScriptAlias /cgi-bin/ "D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"
改为:ScriptAlias /cgi-bin/ "F:/App/CGI/"
(2)<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
改为:
<Directory "F:/App/CGI">
#SetHandler fastcgi-script
#SetHandler cgi-script
#SetHandler fcgid-script
AllowOverride None
#Options None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
(3)最后面增加:
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
SocketPath /tmp/fcgid.sock
timeout 1000
#Action php-fastcgi /cgi-bin/
#AddType application/x-httpd .fcgi
</IfModule>
原来在网上见得一个对我很有帮助的FastCGI例子:
#include "fcgi_stdio.h"
#include "fcgiapp.h"
#include <stdlib.h>
#include <string.h>
int main(){
FCGX_Stream *in, *out, *err;
FCGX_ParamArray envp;
char* request_method;
char* content_length;
char* query_string;
int len;
char buffer[1024];
while(FCGX_Accept(&in, &out, &err, &envp) >= 0){
FCGX_FPrintF(out,"Content-type: text/html\r\n\r\n");
request_method = FCGX_GetParam("REQUEST_METHOD", envp);
if(strcmp(request_method, "POST") == 0){
content_length = FCGX_GetParam("CONTENT_LENGTH", envp);
if(content_length != NULL){
len = 0;
len = strtol(content_length, NULL, 10);
if(len == 0){
FCGX_FPrintF(out, "No data from standard input.\n");
}else{
FCGX_GetStr(buffer, 1024, in);
buffer[len-1] = '\0';
FCGX_FPrintF(out, "%s\n", buffer);
}
}
}else if(strcmp(request_method, "GET") == 0){
query_string = FCGX_GetParam("QUERY_STRING", envp);
FCGX_FPrintF(out, "%s\n", query_string);
}
}
return 0;
}
apache配置
用到的fastcgi的include和lib
httpd-2.2.19-win32-x86-openssl-0.9.8r.zip
mod_fcgid.so
更多精彩内容,请见:http://www.16boke.com