0

httpd.conf の場所タグにフィルターを 1 つだけ設定します。

<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;

応答を生成します。つまり、「ようこそ!!!」を送信します。ブラウザへ。

ただし、次のコードを使用している場合 (コメント化されたコードを有効にします):

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 に答える