gpt4 book ai didi

perl - 为什么我的 Perl CGI 会提示 "Premature end of script headers"?

转载 作者:行者123 更新时间:2023-12-04 16:49:56 25 4
gpt4 key购买 nike

我相信有人可以很快回答这个问题,但我只是 perl 的新手......

我正在尝试修改 demarc(一个简单的网络监控工具)来对一个简单的脚本进行系统调用。脚本本身什么都不做,我只是想进行“概念验证”,因为我不断收到内部服务器错误。脚本权限已设置为 777。当我评论 system() 调用时,一切正常。所以这让我怀疑是 system() 调用发生了错误。我也试过 exec(),但这也不起作用。错误不可能出现在脚本本身中,因为其中只有一个 echo“test”。

我错过了任何权限还是有其他方法可以使这项工作?任何建议将不胜感激。

sub generate_ticket {
my @args = ("$base_path/test.pl");
exec(@args);
}

这在文件中的某处被调用,如下所示:
} elsif ($FORM{'delete_type'}=~/generate/) {
my $message = &generate_ticket($delete_array_ref);
#&ack_events($delete_array_ref);
$events_deleted = (@$delete_array_ref);
&push_message("<FONT COLOR=red><B>Result: $message.</B></FONT>");
}

测试.pl:
#!/usr/bin/perl
print "Test";

错误日志:
[Mon Nov 30 14:58:22 2009] [error] [client 127.0.0.1] 脚本头提前结束:demarc,referer: http://localhost/dm/demarc?td=show_events&limit=60&sid=35

最佳答案

“脚本头过早结束”本身并不是一个非常有用的错误消息。它可能是由多种原因引起的,例如:

  • 不可执行(权限问题)
  • 编译失败(语法错误、依赖问题等)
  • 在常规执行期间提前终止
  • 生成正确的 HTTP header 以外的其他内容作为脚本的第一个输出

  • 但是,在这种情况下,如果我们从字面上理解您的示例脚本 ( print "TEST" ),并且您在 HTTP header 之前输出它,那么您不会首先生成 HTTP header ,因此它是最后一个。 Web 服务器需要 header ,而不是“TEST”。

    如果情况并非如此,我们需要查看更多代码的上下文以了解可能发生的情况。可能是执行 test.pl 的权限问题, 例如。

    关于perl - 为什么我的 Perl CGI 会提示 "Premature end of script headers"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821841/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com