【apache】特定のログだけ取りたくない

このQ&Aのポイント
  • Cent 5.2 Apache 2.2.3 suEXEC環境で特定のログを取得しない方法を教えてください
  • 特定の拡張子や特定のファイルのログを取得しない方法を教えてください
  • error_logに表示されるエラーログを非表示にする方法を教えてください
回答を見る
  • ベストアンサー

【apache】特定のログだけ取りたくない

こんばんわ。 お世話になっております。 Cent 5.2 Apache 2.2.3 suEXEC環境です。 access_log error_log の事なんですが、 特定の拡張子ではなく、特定のファイルのログを取りたくないのですが、可能でしょうか? 拡張子の場合は、 SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(js)|(swf)|(css)$" nolog SetEnvIf Remote_Addr 192.168.1 no_log こんな感じで色々とaccess_logの方は取得しないようにしてます。 今回は、 Directory index forbidden by Options directive: /var/www/httpdocs/21/ mod_mime_magic: can't read Premature end of script headers: log.cgi 以下略 ↑error_logの一部です。 indexがないですが、cgi(動的ページ)なのでエラーは特に出てません。 mod_mime_magicは使ってません。 Premature end of script headersはsuEXEC環境なので色々と・・・ で、error_log達は表示されてしまうのですが、 このようなエラーログを表示させなくと言うのは出来るのでしょうか? 宜しくお願いします。

  • r-n-y
  • お礼率48% (28/58)

質問者が選んだベストアンサー

  • ベストアンサー
  • uwi
  • ベストアンサー率74% (55/74)
回答No.2

具体的に書いた方が早かったですね。 <VirtualHost 10.0.0.1> ErrorLog "|/usr/local/bin/errorlog.pl /var/log/httpd/error_log.10.0.0.1" </VirtualHost> /usr/local/bin/errorlog.plの中身 --- #!/usr/bin/perl my $text = <STDIN>; # 標準入力 $text =~ /Directory index forbidden by Options directive/ and exit; # 特定の文章が含まれていたら終了 my $filename = $ARGV[0]; #第一引数 open FILE, ">>${filename}"; # ファイルに追記 print FILE $text; close FILE; --- とすると/var/log/httpd/error_log.10.0.0.1には"Directory index forbidden by Options directive"を含む文字は追加されません。 ErrorLogをCustomLogに変えても同じです。 ※スクリプトは短くするためにいろいろ端折ってるのでこのまま実運用すると危険です。

r-n-y
質問者

補足

具体的に言って頂き、 ありがとうございますm(_ _)m これで色々とログ見るのが楽になるかと思います。 感謝です。 ありがとうございました。

その他の回答 (1)

  • uwi
  • ベストアンサー率74% (55/74)
回答No.1

mod_mime_magic: can't read Premature end of script headers: log.cgi はsuEXEC環境だとよくあるエラーログですね。 で、エラーがでなくなる方法ではなくログを出さない方法ということなので、私なら CustomLog "|/usr/local/bin/特定の文字列を保存しない便利なスクリプト.sh /var/log/access_log" common とパイプで標準入力を渡して、お手製ログを作ります。 これなら、どんなエラーだろうがログから消せます。

r-n-y
質問者

補足

レスありがとうございます。 なるほど! お手製ログですか・・・ 残った方が良いですからね! ただ、 バーチャルホストしてまして、 複数のドキュメントルートがある中で、 上記のをするとなると一つ一つになりません? 出来るかまだやってませんが、 # SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(js)|(swf)|(css)$" nolog の変更したバージョン? # SetEnvIf Request_URI "\.(log.cgi)$" # CustomLog logs/hogehoge_log common など使えると言う事でしょうか? > 便利なスクリプト.sh /var/log/access_log" common とパイプで標準入力を渡して とこの辺りが少し理解しにくくて、、、 勉強不足ですいません・・・ ## Directory index forbidden by Options directive: /var/​www/httpdocs/21/​ の方はバーチャルなので、 /var/www/httpdocs/21/・・・・略 で一つ一つ取ると膨大な量なので、 エラーの内容のDirectoru index・・・ を吐かない、別のログファイルに保存は厳しそうでしょうか?

関連するQ&A

  • Apache WebサーバでCGIが実行できない

    Apache WebサーバでCGIを実行すると Premature end of script headers というエラーになります。原因が判りません。何方かご教示をお願いします。

  • Apacheサーバに接続してcgiが実行できません。

    サーバはRedHat Linux8で、クライアントはwin2000です。 表示は 「Server Error! Premature end of script headers: dekiru.cgi 」 と出ます。 過去の質問からsuexecの問題だという情報を見つけ、 /var/log/httpd/suexec.log を見てみると、 「uid: (500/XXX) gid:(500/500) cmd:yyy.cgi cannot get docroot informaiton (/home/XXX)」 という表示でした。 homeやXXX、yyy.cgiは全て755という権限でないといけないということで全て755に変更してサーバを再スタートしましたが、解決しません。 デフォルトで/var/www/cgi-bin以下に 同じyyy.cgiをおいて、 http://サーバIP/cgi-bin/yyy.cgiをブラウザでみると、 実行可能です。 メッセージからドキュメントroot情報がgetできないということですがこれ以上やるべきことが見つからず行き止まり状態です。 他に考えられる原因はありませんでしょうか? よろしくお願いします。

  • error_logファイルの中身で教えて・・「 Premature end of script headers: 」

    Perl初心者です。 Perlでスクリプトを書いてます。 うまく動かないのでerr_logファイルを見ると下記の内容になっています。 [error] (2)No such file or directory: exec of /home/***/***.cgi failed [error] [client **.**.**.**] Premature end of script headers: home/***/***.cgi これは何を意味しているのでしょうか?(何処が悪いのでしょうか)教えて下さい。

    • ベストアンサー
    • Perl
  • 500エラーorダウンロードになる。suEXEC

    【環境】 fedora7(さくら専用サーバー Apache(2.2.8) vsftpd(2.0.5-16.fc7) suEXEC cgiを700で動かしたいのですが、 全く動いてくれません。。。 500 Internal Server Error エラーログを一部抜粋しました。 error.log [Sat May 24 17:08:07 2008] [error] [client 121.1.216.98] attempt to invoke directory as script: /home/test1/cgi-bin/test/ [Sat May 24 17:08:07 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] Directory index forbidden by Options directive: /home/test1/httpdocs/file/00/, referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] mod_mime_magic: can't read `/home/test1/cgi-bin/test/log_note.cgi', referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] (13)Permission denied: exec of '/home/test1/cgi-bin/test/log_note.cgi' failed, referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] Premature end of script headers: log_note.cgi, referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] mod_mime_magic: can't read `/home/test1/cgi-bin/test/test.cgi', referer: http://ドメイン/ [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] (13)Permission denied: exec of '/home/test1/cgi-bin/test/test.cgi' failed, referer: http://ドメイン/ [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] Premature end of script headers: test.cgi, referer: http://ドメイン/ [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico suexec.log [2008-05-24 16:58:20]: too few arguments suexec -V の結果 -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="apache" -D AP_LOG_EXEC="/var/log/httpd/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=500 -D AP_USERDIR_SUFFIX="public_html" DOC_ROOTの変更方法も分からず、ずっとhomeでやってたので、 ミスだったのかな?と思い。 /var/以下にcgiを置いてchmodでtest.cgiの権限700にしてしてみましたが、500のエラーでした。 なぜかFFFTPのクライアントからは操作ファイル操作が出来ませんでした。 ユーザー名はapacheグループに属してるだけです。 バーチャルで運営の予定です。 perlのパスは usr/bin/perl test.cgiの先頭は #!/usr/bin/perl です。 suEXECは・・・ chmod 4711 /usr/sbin/suexec でapache再起動後のログに、 [Sat May 24 17:31:04 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) が出ます。 /usr/sbin/httpd -l でチェックすると。 core.c prefork.c http_core.c mod_so.c の4点しかありません。 suexec: disabled; invalid wrapper /usr/sbin/suexec は出ません。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • 【apache】httpd.confのAddHandlerについて

    掲示板利用させていただきます。 apacheとphpの連携を行う際、httpd.confのAddHandlerを以下のように設定すると、httpでphpを呼び出した際、以下のエラーがでます。 ●設定内容 AddHandler cgi-script .cgi .php ●エラー内容 Premature end of script headers 以下のように設定し直すと、正常に利用できるようになります。 ●設定内容 AddHandler cgi-script .cgi phpとcgiはイコールだと思っていたのですが、違うのでしょうか?? どなたかご教示ください。 よろしくお願いします。

  • CGIゲーム設置について

    現在、SOLD OUT というゲームのCGIゲームをSAKURAレンタルサーバーに設置しようとしています。 ただし、エラーログが出て、500 Internal Server Error になってしまいます。 エラーログ詳細 suexec failure: could not open log file, referer: fopen: Permission denied, referer: Premature end of script headers: 上記の3行です。 パーミッション変更も試したのですが、だめでした。 アドバイスよろしくお願いします。

    • 締切済み
    • CGI
  • Server error! Error 500

    RedHat7.3, apache-2でCGIが動くようにしたいのですが、 httpd.confをいじったりいろいろやってるのですが Server error! Premature end of script headers: tmp.cgi Error 500 と言われてしまいます。 Object not found!(Error404)ではないのでcgiファイルがあることは認識されてるようですが、 ”早すぎる終わり”をどうやったら回避できますか? 教えてください。

  • ユーザーディレクトリでCGIの実行ができない。

    環境 FedoraCore2 Apache で、ルートディレクトリでCGIの実行が可能であるのに、ユーザーディレクトリに設置したCGIは500エラーを起こして実行できません。 ブラウザを通してアクセスすると500が出ますが、ユーザーでコマンドラインからCGIを実行すると正常に結果を返します。 なお、コマンドラインでCGIを実行した場合にはログは残りませんが、ブラウザでアクセスした場合、以下のログファイルにログが記録されていました。 error_log [Tue May 16 08:49:21 2006] [error] [client 192.168.11.2] Premature end of script headers: test.cgi suexec.log [2006-05-16 08:49:21]: uid: (503/test) gid: (503/503) cmd: test.cgi [2006-05-16 08:49:21]: cannot get docroot information (/home/test) ちなみに、ネットで見つけた#!/usr/bin/perlの後ろに--を付加する方法では同様の500エラーが出てしまいました。 どなたか、原因及び解決法をご存じの方、ご教授いただければ幸いです。

  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • Apacheのエラーログ

    500のインターネットサーバーエラーの有名なエラーですがはまっています。 Apacheのエラーログを見ているのですが、 Premature end of script headerというエラーがわからずに困っています。 何が悪いのでしょうか?OSはVine Linuxでサーバーを立てていて、 CGIはPerlです。 Perlは5.6.1 Apache 1.3.27 です。