我在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'。
你能在这里提出一些建议吗?
非常感谢!
答案 0 :(得分:0)
您在代码中省略use warnings;
- 将其放入,您将获得有关错误日志中代码失败的更多信息。显然,有关读取输入缓冲区的内容无法正常工作。