从PerlInputFilterHandler生成响应时出错

时间:2010-12-06 13:46:34

标签: perl filter response mod-perl mod-perl2

我在httpd.conf的位置标记中只有一个过滤器:

<Location /testproj/A>
SetHandler modperl
PerlInputFilterHandler MyApache2::Test
</Location>

Test是一个PerlInputFilterHandler。

如果我在此过滤器中关注代码:

package MyApache2::Test10;

use strict;
use Apache2::Const qw(OK);
use Apache2::Filter ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();

sub handler {
my $f = shift; 

#my $buf = '';
#while($f->read(my $tempbuf, 1024)) {
#  $buf = $tempbuf;
#}

my $r = $f->r; 
$r->content_type("text/html\n\n"); 
$r->print("welcome!!!"); 

return OK;
}
1;

它产生响应 - 换句话说,它发送“welcome !!!”浏览器。

但是,如果我遵循代码(启用注释代码):

package MyApache2::Test10;

use strict;
use Apache2::Const qw(OK);
use Apache2::Filter ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();

sub handler {
my $f = shift; 

my $buf = '';
while($f->read(my $tempbuf, 1024)) {
  $buf = $tempbuf;
}

my $r = $f->r; 
$r->content_type("text/html\n\n"); 
$r->print("welcome!!!"); 

return OK;
}

1;

这不起作用。 “欢迎!!!”不会去浏览器 - '404'。

你能在这里提出一些建议吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您在代码中省略use warnings; - 将其放入,您将获得有关错误日志中代码失败的更多信息。显然,有关读取输入缓冲区的内容无法正常工作。