![脚本标题过早结束](https://linux22.com/image/498335/%E8%84%9A%E6%9C%AC%E6%A0%87%E9%A2%98%E8%BF%87%E6%97%A9%E7%BB%93%E6%9D%9F.png)
我的 apache 日志中经常出现“脚本标头过早结束”错误,这会导致内部 500 错误。我理解错误消息的含义 - 我的应用程序没有向浏览器提供所需的标头(可能什么都没有),但奇怪的是这种情况并不总是发生。实际上,这种情况通常发生在部署后我第一次访问网站时。这可能是内存问题吗?有人知道如何解决这个问题吗?我的 apache 日志并没有告诉我任何事情。
我正在 ubuntu hardy 上使用 rails 框架运行一个 ruby 网站。
谢谢你!
答案1
如果这种情况在部署后立即发生,则可能意味着 Ruby 进程正在重新启动,尚未准备好提供页面。Apache 只会给它一定的时间来提供每个页面,然后它会超时并提供 500 个页面。一旦 Ruby 进程“预热”,一切就会恢复正常。
您的 Apache 访问日志应该会告诉您失败的请求花费了多长时间。我猜它们将与 Apache 配置的超时相同;例如: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidconnecttimeout
答案2
您正在运行什么脚本,Perl?
您可以尝试启用警告并使用 Carp 来捕获错误,如下所示:
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw/fatalsToBrowser/;