Perl 我如何获得一个可以与IIS 6、7和Apache一起使用的头文件?

Perl 我如何获得一个可以与IIS 6、7和Apache一起使用的头文件?,perl,apache,iis-7,iis-6,cgi,Perl,Apache,Iis 7,Iis 6,Cgi,我正在尝试获取一个可以与Apache、IIS 6和IIS 7一起使用的头文件。我不会在这里详细说明原因。让我们说这并不像我想象的那么容易:——) 无论如何,这个问题与NPH有关。在我们的代码(最初为IIS 6编写)中,我们有 在每个cgi脚本的顶部;我读到这是你告诉IIS你想要NPH的方式 Apache使用文件名查看输出是否为nph(nph-必须是文件名的开头),因此我所做的(在IIS 6和Apache中都适用)如下所示: use CGI qw(:standard); print header(

我正在尝试获取一个可以与Apache、IIS 6和IIS 7一起使用的头文件。我不会在这里详细说明原因。让我们说这并不像我想象的那么容易:——)

无论如何,这个问题与NPH有关。在我们的代码(最初为IIS 6编写)中,我们有

在每个cgi脚本的顶部;我读到这是你告诉IIS你想要NPH的方式

Apache使用文件名查看输出是否为nph(nph-必须是文件名的开头),因此我所做的(在IIS 6和Apache中都适用)如下所示:

use CGI qw(:standard);
print header('text/html', '200 OK');
有趣的是,IIS 7似乎需要NPH,所以如果我不这样做

use CGI qw(:standard -nph);

浏览器试图对文件执行一些奇怪的操作,因为它没有得到mimetype

还要注意:IIS 6和7完全可以不打印任何头,但Apache不喜欢这样

无论如何,现在最好的办法就是

use CGI qw(:standard);
print header('text/html', '200 OK');
以某种方式在iis7中工作。有人知道我怎么做吗?我不知道服务器配置的所有细节,但如果您告诉我如何获取您可能需要的任何细节,我可以做到


谢谢你

我只需要创建一个子例程,根据服务器的不同来执行正确的操作。你知道在每种情况下你必须做什么,所以在这种情况下就这样做

另一个选项是通过查看服务器类型来修补CGI.pm以正确设置其$CGI::NPH变量。CGI.pm已经具备了基础知识。一旦你解决了这个问题,提交一个补丁


祝你好运:)

我只需要创建一个子例程,根据服务器的不同来做正确的事情。你知道在每种情况下你必须做什么,所以在这种情况下就这样做

另一个选项是通过查看服务器类型来修补CGI.pm以正确设置其$CGI::NPH变量。CGI.pm已经具备了基础知识。一旦你解决了这个问题,提交一个补丁

祝你好运:)

布赖恩(和其他人)告诉我写一个子程序,它会做正确的事情。希望这对其他人有帮助

sub header {
    return (($ENV{PERLXS})?"HTTP/1.0 200 OK\r\n":"").CGI->header(@_);
}
布赖恩(和其他人)告诉我写一个子程序,它会做正确的事情。希望这对其他人有帮助

sub header {
    return (($ENV{PERLXS})?"HTTP/1.0 200 OK\r\n":"").CGI->header(@_);
}
sub header {
    return (($ENV{PERLXS})?"HTTP/1.0 200 OK\r\n":"").CGI->header(@_);
}