Boa应用中报错:502 Bad Gateway The CGI was not CGI/1.1 compliant.

bBoa应用过程经验总结(404,502错误解决)(评论中有更新)


502   Bad   Gateway  
The   CGI   was   not   CGI/1.1   compliant.
1、改变CGI程序的权限 chmod 755 ***.cgi
2、CGI程序中写头的时候不能丢了 “\n\r\n” 两个换行符! printf("Content-type:text/html\n\r\n");
3、一般是写的CGI程序有问题,换个CGI程序试试,然后对比!

以下转自: http://www.cnblogs.com/hnrainll/archive/2011/06/01/2067266.html
一,在var/www中打开了基本信息设置这个html文件,然后表单内容提交给comment.cgi,又是出现了404,not found,The requested URL /var/www/cgi-bin/comment.cgi was not found on this server。本次问题出在不能用汉字。把html文件中的汉字改成英文后404问题消失。
二,测试cgi时可能出现问题   502   Bad   Gateway  
The   CGI   was   not   CGI/1.1   compliant.
解决:
1,修改boa代码cgi.c,在  complete_env 函数中添加环境变量  
my_add_cgi_env(req,   "LD_LIBRARY_PATH",   "/lib"),然后重新make即可;     
2,编译时加入一个参数,具体如下:  
gcc   -static   test.c   -o   test.cgi  
3,有时原因可能是出在 req->post_data_fd上,在cgi.c的ini_cgi()中,在进行fork()之后,父行程会将 req->post_data_fd关闭设为零,在别的系统中这不会影响到子进程,不过不知道为什么在uclinux下就会出问题,试试把
if (req->method == M_POST) 
{
close(req->post_data_fd); /* child closed it too */
req->post_data_fd = 0;
}
里的req->post_data_fd = 0,注释掉看看;
4,boa对实现动态网页的CGI的支持存在一些缺陷,解析CGI应答头时不能完整处理status和location。在此借鉴了http://bbs.chinaunix.net/viewthread.php?tid=824840&pid=5747073&page=1,对整个cgi_header.c进行的修改。


你可能感兴趣的:(cgi,web服务器,经验)