Premature end of script headers 错误的终极处理方法 (CGI的相关程序)

转自:http://blog.csdn.net/garinwang/article/details/5967213


作者这篇文章写得还是挺好的


在之前的文章里面有提到过,写的cgi程序在后台服务器运行没有问题,如果使用前台URL调用,就会时不时的报出“internal server error”,查看apache的错误日志,会发现“Premature end of script headers”错误。关于这个错误在之前的文章里面也提到过。主要是三方面的原因:

 1.在输出cgi头之前,有文本输出。

 2.cgi程序中的路径错误

 3.cgi的访问权限。

 

根据这三点一一排查,均没有发现问题。奇怪的是cgi程序有时候能从前台url访问,有时候报错。cgi的程序权限也是755,是可以访问的。

仔细的想了想之后发现,问题其实在这里:cgi程序里面其实有些操作是创建文本并访问文本的。

例如:

   fd = fopen("xxx.txt","w");

这时候创建出的文本文件使用权限实际上是随机分配的(从网上看到的,不是很确定)。当cgi在后台执行时,由于是用户是root用户,权限最大,在程序执行过程中不会遇到权限问题。当在前台url执行cgi时,虽然cgi程序的权限是755,程序能够被调用。但是程序在运行中创建的文本不确定其权限能否被前台的用户级别调用,因此就会出现在url调用时报错。

 解决的方法如下:

在程序每次创建一个文件时,对这个文件的访问权限进行设置,使前台也能够具有访问权限(具体的读写权限根据自身需要设定)例如:

   fd = fopen("xxx.txt","w");

   chmod("xxx.txt",511);

  511是十进制数,对应的八进制数为777,该值表示所有用户对该文件都具有读、写、执行权限。


这样设置之后,就不会再出现cgi在服务器正常执行,url调用报错的问题。其实这个问题解决起来很简单,但是就是很隐蔽,一般不容易发现。下次在写cgi程序的时候对访问权限的问题应该更加关注些。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值