Premature end of script headers 的原因
2012-03-18 23:07
423 查看
@import url(http://www.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
Premature,英文解释, 过早的。
Premature end of script headers 也就是cgi执行过早的结束了。通常这是因为CGI程序有问题,未能按照格式正确的打印完毕,就结束了。所以会报错。
但是 今天遇到一个很奇怪的问题。开发,测试环境中,某CGI运行正常,一到运营环境就报错:Premature end of script headers .
但是的逻辑就是,为什么程序没有变,但却运行突然出错了。而且一开始的时候,还能够运行。突然就报错。也没有人修改过程序,尝试重新编译,结果仍然一样报错。
后来查看cgi应用日志,发现打印了一串错误信息,报读取配置文件失败。
才恍然大悟。 cgi 在没有变更的情况下,突然无法执行的原因如下:
1 应用日志报 读取XX.conf配置文件失败。 因为之前配置文件一直读取正常,所以CGI也运行正常。
但是现在配置文件无法读取了,cgi打印了错误到页面上,此段代买存在一定的问题,导致页面无法现显示,报Premature end of script headers .
2 为什么conf文件突然无法显示了呢? 因为在suse服务器下,文件的权限默认都很少。 apache以nobody用户运行,本来没事。 因为文件数组也改成Nobody了。但是上服务器修改了某配置,保存。这配置文件编程了root ,导致该文件无法被以Nobody用户起的apache读取,报错。
而报错信息这一分支显然没有经过仔细的测试,存在问题。导致报Premature end of script headers。
所以,当程序都没有动过的时候,突然出现异常。我们就应该考虑,程序是否因为某种原因,走到了某一个特殊的分支,导致出错。此时,详细的应用日志,能给定位问题带来巨大的方便。
-------------------------------------
现状:
当使用Apache(或其他web server,例如lighttpd),以及fastcgi(或cgi)等来部署rails或python等时,经常会出现以下错误:
Premature end of script headers: dispatch.fcgi
解决方案:
本解决方案是基于Rails+Apache+fastcgi+debian,其他类似。
检查dispatch.fcgi的用户或用户组,以及访问权限,至少定义为755.
检查dispatch.fcgi的第一行的ruby编译器是否正确,很多人开发在windows平台上,而部署则在Linux/Unix平台上, 所以将#!C:/ruby.exe改为# !/usr/bin/ruby。ruby具体在什么位置,输入whereis ruby即可。
不能允许有打印的代码。例如在rails里,坚决不要将p 或puts写到代码里,这样会导致header破坏。其他语言看着办。
如果以上方案均为解决,到dispatch所在的目录下运行 ./dispatch.fcgi看是否正确。如果有什么错误的话,修正即可。
@import url(/css/cuteeditor.css);
@import url(http://www.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
Premature,英文解释, 过早的。
Premature end of script headers 也就是cgi执行过早的结束了。通常这是因为CGI程序有问题,未能按照格式正确的打印完毕,就结束了。所以会报错。
但是 今天遇到一个很奇怪的问题。开发,测试环境中,某CGI运行正常,一到运营环境就报错:Premature end of script headers .
但是的逻辑就是,为什么程序没有变,但却运行突然出错了。而且一开始的时候,还能够运行。突然就报错。也没有人修改过程序,尝试重新编译,结果仍然一样报错。
后来查看cgi应用日志,发现打印了一串错误信息,报读取配置文件失败。
才恍然大悟。 cgi 在没有变更的情况下,突然无法执行的原因如下:
1 应用日志报 读取XX.conf配置文件失败。 因为之前配置文件一直读取正常,所以CGI也运行正常。
但是现在配置文件无法读取了,cgi打印了错误到页面上,此段代买存在一定的问题,导致页面无法现显示,报Premature end of script headers .
2 为什么conf文件突然无法显示了呢? 因为在suse服务器下,文件的权限默认都很少。 apache以nobody用户运行,本来没事。 因为文件数组也改成Nobody了。但是上服务器修改了某配置,保存。这配置文件编程了root ,导致该文件无法被以Nobody用户起的apache读取,报错。
而报错信息这一分支显然没有经过仔细的测试,存在问题。导致报Premature end of script headers。
所以,当程序都没有动过的时候,突然出现异常。我们就应该考虑,程序是否因为某种原因,走到了某一个特殊的分支,导致出错。此时,详细的应用日志,能给定位问题带来巨大的方便。
-------------------------------------
现状:
当使用Apache(或其他web server,例如lighttpd),以及fastcgi(或cgi)等来部署rails或python等时,经常会出现以下错误:
Premature end of script headers: dispatch.fcgi
解决方案:
本解决方案是基于Rails+Apache+fastcgi+debian,其他类似。
检查dispatch.fcgi的用户或用户组,以及访问权限,至少定义为755.
检查dispatch.fcgi的第一行的ruby编译器是否正确,很多人开发在windows平台上,而部署则在Linux/Unix平台上, 所以将#!C:/ruby.exe改为# !/usr/bin/ruby。ruby具体在什么位置,输入whereis ruby即可。
不能允许有打印的代码。例如在rails里,坚决不要将p 或puts写到代码里,这样会导致header破坏。其他语言看着办。
如果以上方案均为解决,到dispatch所在的目录下运行 ./dispatch.fcgi看是否正确。如果有什么错误的话,修正即可。
@import url(/css/cuteeditor.css);
相关文章推荐
- 产生perl CGI错误"Premature end of script headers"的可能原因
- Premature end of script headers: test-cgi 错误
- cgi程序报 Premature end of script headers:
- python脚本放到linux的cgi-bin下出现Premature end of script headers问题
- apache+wsgi+python: Premature end of script headers: mytest.py
- Premature end of script headers 错误的终极处理方法 (CGI的相关程序)
- 解决Premature end of script headers
- Premature end of script headers 错误的终极处理方法
- [Python]python CGI脚本在apache服务器上运行时出现“Premature end of script headers”错误
- horizon error:End of script output before headers: django.wsgi(kolla-ansible部署在容器)
- openstack访问horizon出现End of script output before headers: django.wsgi
- warning: no newline at end of file的原因
- tomcat 启动出错 Parse Fatal Error at line 1 column 1:Premature end of file
- premature end of file错误
- vc提示unexpected end of file found的原因分析
- Corrupt JPEG data: premature end of data segment
- Error on line -1 of document : Premature end of file. Nested exception: Premature end of file.
- Premature end of file
- warning: no newline at end of file的原因
- 编译Android程序时,遇到premature end of file问题