前一段时间接触了CGI,虽然要实现的功能不是很复杂,但这个过程中遇到了一些问题,当时也头疼了一阵子,后来慢慢摸索最终还是解决了,现把个人遇到的几个CGI常见错误总结分享出来:
1、Internal Server Error ?错误代码500:
可能原因如下:
(1)、缺少标准输出头信息:
printf("%s%c%c ","Content-Type:text/html",10,10);
这个输出是作为 HTML 的文件头。因为 CGI不仅可以像浏览器输出 HTML 文本,而且可以输出图像,声音之类的东西。 这一行告诉浏览器如何处理接受到的内容,此处为一个html网页文本文件。在Content-Type 的定义后面跟有两行的空行,这也是不可缺少的。因为所有 CGI 程序的头部输出都是相近的,可以为其定义一个函数调用来节省编程的时间。这是CGI编程常用的一个技巧。
(2)、程序本身有语法错误。
程序中的一些语法错误同样会导致CGI程序执行出错,这时可以使用服务器自已的错误日志来判断错误原因,apache2的错误日志目录为:/var/log/apache2/error.log。
(3)、是否设为755或777的权限,有些主机设置只能用755,那么使用777也会错。
2、在IE端运行CGI可执行程序时弹出下载提示框:
这个原因很可能是你把cgi可执行程序位置放错了,比如你配置服务器时指定的CGI可执行程序为/var/www/cgi-bin目录,而却把cgi可执行程序放在了/var/www目录下,在IE端调用时使用:http://hostip/xxx.cgi,这样一般浏览器上都会弹出下载提示框提示你保存譔cgi文件。
3、Can no execute binary file:
(1)、检查执行权限,一般要赋予CGI可执行程序777权限。
(2)、如果是交叉编译,要注意所使用的编译器,用错编译器,程序当然无法正确执行。
4、Not Found. The requested URLwas not found on this server:
html页面代码中的action=URL中CGI可执行程序的URL指定错误。可能是CGI的路径输入错误,也可能是cgi-bin目录下根本没有你所指定的cgi响应程序。
5、Access Error, Data follows,CGI process file does not exist:
CGI程序文件不存在。
原因1:可能是cgi-bin目录下没有CGI可执行文件。
原因2:可能是CGI可执行文件名错误。
原因3:可能是网络存在问题导致网络不通而找不到指定的CGI可执行程序。
6、Access Error: Data follows,CGI generated no output
这个错误一般原因是:你的CGI可执行程序要从某处获取某个或某些结果并把譔结果反馈给WEB服务器时,这些结果获取出现了异常或错误,导致CGI程序提前结束,服务器端没有得到想要的结果。可以检查CGI逻辑和可执行程序的操作对象来排除故障。
(还在学习中,遇到的问题及其总结会在后续学习过程当中陆续更新,同时希望路过的同学发现有不正确的地方能留下宝贵的意见和建议,以求共同进步!)