0

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

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

测试是一个 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;

它产生响应——换句话说,它发送“欢迎!!!” 到浏览器。

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

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' 会。

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

非常感谢!

4

1 回答 1

0

你从你的代码中省略use warnings;了——把它放进去,你会在你的错误日志中获得更多关于失败代码的信息。显然,有关读取输入缓冲区的某些内容不起作用。

于 2010-12-06T18:01:55.920 回答