Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373085
  • 博文数量: 94
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 823
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 16:49
文章分类

全部博文(94)

文章存档

2015年(1)

2011年(1)

2010年(3)

2008年(8)

2007年(55)

2006年(26)

我的朋友

分类:

2006-05-19 21:46:48

    想在linux下写几个能由apache执行的动态网页,由于学PHP来不及,用C写吧估计也困难,所以选择shell。因为看到别人用shell能写,就是用几个echo把html语言写显示出来,到了用户浏览器时自然能被显示为网页,所以自己也写了个。尝试中,发现自己写的网页就是不能被显示。如果放在nagios/sbin/目录中,则浏览器显示有内部错误(Internal Server Error),然后查看apache日志,有Access denied for user 'nagios'@'localhost' (using password: YES) 和 malformed header from script. Bad header=: hgtop.cgi 之类的错误,不明白其中的原因。最后仔细看了人家写的程序,在输出html语言之前先有这样一段代码:
 
echo "Cache-Control: no-store"
echo "Pragma: no-cache"
echo "Refresh: 90"
echo "Last-Modified: $MDATE" (这是前面已赋值的一个变量)
echo "Expires: Thu, 01 Jan 1970 00:00:00 GMT"
echo "Content-type: text/html"
echo ""
 
于是把它加到我网页前面,呵,居然成功了!
    看来,它是需要先告诉apache一些东西啊。随后尝试删除其中的一些,看还出不出问题,结果发现问题仅仅是少了一个空行。即使前面那几行代码都不用,只要在输出 之前输出一个空行,就没有问题了。哎,折腾了我这么久。
    不过也学到了一些,前面那些内容是告诉apache的,比如 Refresh: 90 是告诉apache这个网页每90秒刷新一次,等等,再研究吧。
 
    还有,再尝试中,如果我把用shell写的网页放到nagios/share/目录中,在浏览器中显示的是这个文件中所有的字符,包括 # 注释的,能解释的html语言会被解释,其他的都显示出原来的字符,包括 echo 、$arible 等命令和变量,并不被替换。估计是apache把这个可执行文件当作纯文本文件吧。
 
 
补充一点有用的东西。
用shell写的.cgi文件可以接受由网址传来的参数,比如的我的浏览器请求地址是
那么在文件file.cgi中就可以使用变量 $QUERY_STRING 取得值 query=abc
这样就可以使用shell进行网页的动态处理。
 
 
阅读(2198) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~