cgi测试程序报错(网页:502 Bad Gateway The CGI was not CGI/1.1 compliant.)(错误日志:cgi header:unable to find LFLF

一、环境

BOA、C、CGI、HTML、linux(ubuntu)。

二、问题

html网页模板显示正常,但是cgi程序无法正常显示。

网页报错:

“502 Bad Gateway 
The CGI was not CGI/1.1 compliant.“
 

错误日志:

cgi header:unable to find LFLF
 

三、报错的几种可能性及解决方法

        修改好配置文件后,重启一下boa。

//找到boa进程对应的pid,记住
ps -e | grep boa    //回车

//结束进程
kill PID    //PID为你刚刚找到的boa的pid,回车


//启动boa
//在有boa执行程序的目录下输入

./boa    //回车

//查看boa是否已经启动
ps -e | grep boa    //回车

1、cgi以及所在目录的执行权限不足

解决办法:

在需赋予的所在目录下输入:

sudo chmod 755 fileneme
//filename为你需要赋予的文件权限的文件名

 刷新页面即可

2、boa.conf文件cgi路径配置

打开boa.conf文件,查看这段代码:

ScriptAlias /cgi-bin/ /etc/boa/www/cgi-bin/

        ①查看所编写的cgi程序是否在/etc/boa/www/cgi-bin目录下,如果不存在,则更改为自己的目录, ②或者把cgi文件移至/etc/boa/www/cgi-bin/目录下。

结束后刷新页面查看是否成功。

3、代码问题

CGI脚本的结束标志缺失,影响了服务器正确解析HTTP头。

例子:

可能你的代码在解析http头的时候没按照固定格式来,即在text/html后面加上\n\n。即:

printf("content-type:text/html"); 

改为:

 printf("content-type:text/html\n\n"); 

重新编译成.cgi放回原路径即可(记得要重新赋予权限)。

操作成功后,刷新页面

4、编译问题

①改为静态编译:

gcc -o filename.cgi filename.c -static

如若不行则方法②

②在开发的时候被公司指定编译链(我的为arm-linux-gnueabihf-gcc)

编译的方法不是gcc开头了,而是

arm-linux-gnueabihf-gcc -o test.cgi test.c

编译好后粘贴到目标目录下,刷新即可。

评论区见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值