2

apache2 / mod_perl の下に複数の仮想ホストをセットアップしました。ディレクティブを使用して、ErrorLog仮想ホストごとに個別のエラー ログを取得しました。これは、Apache2::Log を使用した場合にのみ期待どおりに機能しました。「警告」は、通常のエラー ログにのみ記録されます。

それで、それはすべてうまくいっています。ついに。しかし、1 つ問題が残っています: $r->log_error 経由でログに記録すると、改行が次のように置き換えられていることがわかります\n

なぜこれが起こるのか、どうすれば修正できるのでしょうか?

ありがとう。

4

3 に答える 3

8

これは mod_perl の問題ではなく、Apache の問題です。どうやら、エスケープされていない出力をエラー ログに出力することにはセキュリティ上の懸念があるようです (理由は完全にはわかりません)。そのため、これを使用してビルド/構成するときに、Apache でこれを明示的に有効にする必要があります。

CFLAGS=-DAP_UNSAFE_ERROR_LOG_UNESCAPED ./configure

既にインストールされている apache を使用している場合、これを変更するためにできることはあまりありません。

于 2009-10-15T19:33:58.330 に答える
0

ビルド済みのインストールがある場合は、このコード行を使用して問題を修正できますが、vhost内のすべてのページ実行(header.phpまたはconfig.phpファイルなど)に含める必要があります。

ini_set('error_log','/var/log/apache2/error.log');
于 2012-01-19T16:06:10.223 に答える
0

私はこれが非常に古いスレッドであることを知っていますが、Google の検索結果では依然としてトップに立っています。

以下をコメントアウトします。

BEGIN { *CORE::GLOBAL::warn = \&Apache2::ServerRec::warn; }

上記は次のとおりです。 警告がメインサーバーのログではなく、仮想ホストのログに送信されるようにします。

これが私のような誰かに役立つことを願っています:)

于 2013-02-22T13:24:17.967 に答える