【问题标题】:Premature end of script headers - What, I have no idea!脚本标题过早结束 - 什么,我不知道!
【发布时间】:2010-09-14 15:22:56
【问题描述】:

我尝试在我的服务器上执行一个简单的 perl 脚本,我得到一个内部 500 服务器,当我检查它显示的错误日志时:

Premature end of script headers: test.pl

这里是 perl 脚本:

#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "testing...\n";

我的cgi-bin 文件夹的权限为0755。脚本本身也是0755。该脚本归apache所有,属于apache组。该脚本通过命令行运行良好。

这是什么问题,我该如何解决?!

感谢大家的帮助!

更新

在 suExec 中有趣的发现:

2010-09-14 17:38:28]: uid: (10001/som) gid: (2522/2522) cmd: test.pl
[2010-09-14 17:38:28]: target uid/gid (10001/2522 or 2521) mismatch with directory (48/0) or program (48/0)

但我的 cgi 文件夹与 test.pl 脚本相同 - 它是指另一个目录吗?

【问题讨论】:

  • IIRC,你需要在 headers 之前发送 "HTTP/1.1 200 OK\n" ,不是吗?
  • 我在我的另一台服务器上尝试了同样的脚本,它运行良好。我不是 perl 专家,但我认为没有它也可以,因为它可以在服务器上运行?
  • 这里调试这个问题时有一系列非常好的事情可以尝试:perlmonks.org/?node_id=262011
  • @Piskvor - 不。服务器会处理这个问题。

标签: perl cgi server-error


【解决方案1】:

很多好的建议:How can I troubleshoot my Perl CGI script

看到您的 suexec 错误消息后更新:看起来您的服务器需要 CGI 程序由与目录相同的用户拥有。尝试更改文件的所有权。

【讨论】:

  • 这是我几周前遇到的一个问题的解决方案。它让我发疯了一个晚上,直到我因为另一个原因不得不做一个chown -R 时它神奇地自行解决了。
【解决方案2】:

对于在 PerlMonks 上给出错误消息的 Perl 脚本有很多很好的故障排除建议:start here。我没有在您的脚本中看到任何具体错误,而且您似乎已经涵盖了文件权限,所以我将从 Apache 配置建议开始。

【讨论】:

  • 谢谢 pjmorse。 :) 如果您有任何问题,每个人都应该查看该列表。我设法发现 SuExec 给我带来了问题,随后我将其禁用。
【解决方案3】:

使用 CGI 模块,例如

使用 CGI qw/:标准/; $q = CGI->新的; 打印 $q->header('text/html'); 打印“测试...\n”;

【讨论】:

  • 很好的一般建议,但并不是问题的真正答案。还有,为什么要导入CGI函数,然后在OO模式下使用呢?
猜你喜欢
  • 2013-05-30
  • 2014-07-26
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 2011-11-01
  • 2012-06-25
相关资源
最近更新 更多