nameofhsw 发表于 2012-08-21 15:29

cgi+boa,cgi页面执行失败。提示cgi_header: unable to find LFLF

web server使用的是boa。
目前,单独编译cgi程序没有错误。
但是如果在main函数中调用cgilib提供的函数,譬如init_cgi()等(实际上,就算是新写一个空函数调用也会出现这种情况,所以排除函数错误的原因),那么页面访问该cgi时,boa则提示cgi_header: unable to find LFLF。
打开boa的FASCIST_LOGGING调试信息,利用boa的调试信息:
fprintf(stderr, "\"%s\"\n", buf); //其中buf = req->header_line

得到的结果是语句仅仅显示一对“”,而没有任何内容。
正常应该显示cgi的main中所有printf的HTML报文,即“Content-type: text/html\n\n”等。

这个是cgilib库的原因吗?还是因为makefile没写好导致没有调用到cgilib??
或者是另外的原因?求高手指点
附上cgi的makefile文件内容:(其中libcgi-1.0为cgilib库)
CC=gcc

ifeq ($(SAMBA),1)
CFLAGS += -DLARGE_UPGRADE_BUF=1
endif
CFLAGS += -DPRODUCT_$(PRODUCT)
CFLAGS += -Wall -Ilibcgi-1.0/src/
LDFLAGS += -Llibcgi-1.0/src/ -lcgi

all: libcgi xml_action.o login.o protected.o
$(CC) xml_action.o -o xml_action.cgi $(LDFLAGS)
$(CC) login.o -o login.cgi $(LDFLAGS)
$(CC) protected.o -o protected.cgi $(LDFLAGS)
libcgi:
cd libcgi-1.0; ./configure
make -C libcgi-1.0 CC="$(CC) -fPIC"

clean:
rm -f *.cgi *.o
make -C libcgi-1.0/ clean

另外给login.c的main函数:
可以正常在boa的调试信息中看到语句:“Content-type: text/html”,即上面所说req->header_line的内容。
int main(void)
{
printf("Content-type: text/html\n\n");
return -1;
}
boa调试信息显示“cgi_header: unable to find LFLF”,以及一个空的“”,即上面所说req->header_line的内容。
int main(void)
{
printf("Content-type: text/html\n\n");
cgi_init();          //lib-cgi中的函数,即使在此使用一个不起任何作用的空函数,结果一样
return -1;
}

雪中的紫诺 发表于 2013-04-02 11:44

是不是文件权限的问题
页: [1]
查看完整版本: cgi+boa,cgi页面执行失败。提示cgi_header: unable to find LFLF