当前位置: 代码迷 >> CGI >> THTTPD,分辨不了.cgi文件
  详细解决方案

THTTPD,分辨不了.cgi文件

热度:2893   发布时间:2013-02-26 00:00:00.0
THTTPD,识别不了.cgi文件
    我在客户端点击“提交”时,出现的不是预期的login.cgi页面,而是给出了下载的Login.cgi文件的页面,怎么回事呢?
我的thttpd服务器显示html页面正常,thttpd.conf配置文件设置如下:

# This section overrides defaults
dir=/home/httpd/html
#chroot
#屏蔽chroot是为了运行动态编译的CGI
user=httpd# default = nobody
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
# This section _documents_ defaults in effect
#port=80
# nosymlink# default = !chroot
#symlinks
# novhost
cgipat=/cgi-bin/*#声明CGI程序的目录,是以dir为根目录的路径
# nothrottles
# host=0.0.0.0
# charset=iso-8859-1

按理说这样应该没问题了呀,为什么会出现以上原因呢,烦请高手指教。

------最佳解决方案--------------------------------------------------------
浏览器是火狐的话,直接输出 cgi 源码,换个IE,看看输出的头尾格式,能够输出的话,服务配置我觉得就没问题了,是不是你写的cgi有问题.
------其他解决方案--------------------------------------------------------
在命令行使用 -c 指定 cgi 的路径. 如 thttpd -c cgi-bin/**
------其他解决方案--------------------------------------------------------
执行cgi,配置文件中user改成root,应该就可以了.要不500错误
------其他解决方案--------------------------------------------------------
问题补充:如果perl编写的cgi返回的是html页面,即print"Content-type:text/html"...我的点击主页里的提交后,得到的页面为:
#!/usr/local/bin/perl print "Content-type:text/html","\n\n"; print "","\n"; print "","\n"; print "","\n"; print "","\n"; print "","\n"; print "
get message from url
","\n"; $Querystringfromenv=$ENV{QUERY_STRING}; @Nameandvaluelists=split(/&/,$Querystringfromenv); foreach $nameandvalue(@Nameandvaluelists) { ($Name,$Value)=split(/=/,$nameandvalue); $Name=~tr/+//; $Value=~s/%([\dA-Fa-f][\dA-Fa-f])/pack("c",hex($1))/eg; print"name=$Name,value=$Value",
\n"; } print "","\n"; print "","\n"; 
好像就是识别不了CGI,把源代码几乎都显示出来了。大侠们多多指教!
------其他解决方案--------------------------------------------------------
 上面颜色不清楚,不好意思,如下:
#!/usr/local/bin/perl print "Content-type:text/html","\n\n"; print "","\n"; print "","\n"; print "","\n"; print "","\n"; print "","\n"; print " 
get message from url 
","\n"; $Querystringfromenv=$ENV{QUERY_STRING}; @Nameandvaluelists=split(/&/,$Querystringfromenv); foreach $nameandvalue(@Nameandvaluelists) { ($Name,$Value)=split(/=/,$nameandvalue); $Name=~tr/+//; $Value=~s/%([\dA-Fa-f][\dA-Fa-f])/pack("c",hex($1))/eg; print"name=$Name,value=$Value", 
\n"; } print "","\n"; print "","\n"; 

------其他解决方案--------------------------------------------------------
还是设置那里的问题,把完整路径换上去试试;多换几种写法
------其他解决方案--------------------------------------------------------
按上面两位说的把user=root;cgipat=/home/httpd/html/cgi-bin/*(完整路径),结果还是不行。。。
------其他解决方案--------------------------------------------------------
帮定,虽然我也才开始弄,希望大家都能够很快的学会这个!很好的完成任务
------其他解决方案--------------------------------------------------------
该回复于2009-09-25 10:50:09被版主删除
------其他解决方案--------------------------------------------------------
我的浏览器是IE,cgi应该没问题,照抄的。  不过问题解决了,换了个开发包里的THTTPD,倒是成功了,谢谢大家的关注。
------其他解决方案--------------------------------------------------------
问题具体怎么解决的啊????????