0

ブラウザはサーバーからのデータを待機し、ログはサーバーの再起動後にのみ行われます。また、チャイルズが分岐する可能性があることもわかります。

$ah{ $r->hostname } ||=  HTML::Mason::ApacheHandler->new ( .. )

sub handle{
    eval{ $ah{ $r->hostname }->handle_request($r); };
    if( $@ ) {
    $r->filename( $r->document_root . '/errors/500.html' );
    $ah{ $r->hostname }->handle_request($r); };
    $r->log_error( 'ERROR' );
    }
}

彼らが終わっていないので、私は何を間違っていますか?

UPD同じ問題に関するメモ が 1 つだけ見つかりました。

4

2 に答える 2

1

http://foertsch.name/ModPerl-Tricks/custom-content_type-with-custom_response.shtml

したがって、エラー テキストを custom_response に直接渡す代わりに、それを pnotes に保存し、それ以外の場合は未使用の URI、たとえば ///error を custom_response として設定します。

sub handler {
  my ($r)=@_;
  @{$r->pnotes}{qw/etext ect/}=("sorry, no access\n", 'text/plain; charset=my-characters');
  $r->custom_response( 403, "/-/error" );
  return 403;
}

ここで、Perl ハンドラーを実行するように ///error を構成する必要があります。

<Location /-/error>
  SetHandler modperl
  PerlResponseHandler My::Error
</Location>

そしてもちろん、ハンドラー関数 My::Error::handler: が必要です。

sub handler {
  my ($r)=@_;
  return Apache2::Const::NOT_FOUND unless $r->prev;
  $r->content_type($r->prev->pnotes->{ect});
  $r->print($r->prev->pnotes->{etext});
  return Apache2::Const::OK;
}

この解決策は機能しているようですが、主な質問からの答えはまだわかりません:なぜリクエストが終了していないのですか?

UPD

それは mod_perl2 のバグのようです https://bz.apache.org/bugzilla/show_bug.cgi?id=57976

于 2015-05-23T16:04:06.907 に答える