2

我尝试在我的服务器上执行一个简单的 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 脚本相同——它是指另一个目录吗?

4

3 回答 3

9

很多好的建议:如何排除 Perl CGI 脚本的故障。

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

于 2010-09-14T15:35:20.843 回答
3

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

于 2010-09-14T16:36:29.887 回答
0

使用 CGI 模块,例如

使用 CGI qw/:标准/;
$q = CGI->新的;
打印 $q->header('text/html');
打印“测试...\n”;     
于 2010-09-14T15:31:20.700 回答