• 締切済み

Apacheのログにエラー出力

こんにちは、honiyonです。  簡単なゲートプログラムを作っています。  IDとパスワードで認証出来たら、特定のURLに飛ばす、というだけのものです。  もし、認証に失敗した場合には「404 NotFound」としたいと考えています。  このエラーを Apacheレベルで発生させて、Apacheのログにも残るようにする事は可能なのでしょうか?  因みにCGIはFreePascalで書いていますが、やり方はPerlのでもRubyのでもC/C++のでも構いません。  宜しくお願いします(..

  • CGI
  • 回答数1
  • ありがとう数1

みんなの回答

  • nak205
  • ベストアンサー率60% (40/66)
回答No.1

こんにちは、 CGIから何か表示させるばあいは通常 Content-typ: text/html プラス改行二つを発行しますが、かわりに、 Location: /uso-pyon.html プラス改行二つを発行し、実在しないhtmlファイルに飛ばしてNot Foundエラーを発生させればいいと思います。 Perlだと、 print "Location: /uso-pyon.html\n\n"; です。Content-typeのヘッダはいりません。 ログはaccess_logではなく、error_logに残るはずです。

honiyon
質問者

お礼

こんにちは、honiyonです。  返信が遅くなり申し訳有りません(..  ご回答ありがとうございました。  この質問の後も色々と探していたのですが、正式なやり方を見つけました。  以下のようにすると、システムエラーが生成出来るようです。 Status: 404 Not Found Content-Type: text/html ~HTML~  Status:というヘッダがミソのようでした。  また、お教え頂いたアイディアもなかなか面白いですね(^^)  この方法は全く気づきませんでした。  ありがとうございました。

関連するQ&A

  • apacheでログを圧縮&再起動を掛けたい

    長い質問ですみません。随分試行錯誤した上でまだ悩んでいます。 無料プロバイダを個人運営でやっているものなんですが、 サーバーのログをhttp.confの設定でこんな感じで作成し、 CustomLog /var/log/apache/XXX.XXX.ne.jp-access.log combined これをCSV扱いしてCGIで読み取り、解析をしています。 自動的に一週間でログの切り替えを行っている様で最初はこれでよかったのですが、アクセスが増えるにつれcgiとログファイルが非常に重くなってきました。 そこで、以下のことをしようと思っています。 cronを使えば良いのではないかと思いました。 1.一定のアクセスの少ない時刻にログ圧縮をかける (圧縮ファイルは上書きでよい。どっちみちそんなに遡っては見ないので) 2.apacheを再起動する (再起動かけないと新しいlogファイルが作成されない様なので) ちなみに手動では以下の方法で出来ました。 gzip /var/log/apache/XXX.XXX.ne.jp-access.log ps x kill プロセスID /usr/sbin/apache でも自動だと kill プロセスIDがダメなんです。 同じIDでapacheが起動してくれないので・・・。 1.apacheを一定時間に確実に再起動させる方法 2.それ以外の1日単位でログファイルの切り替えを行う方法 CGIが一定ファイルを読む仕掛けになってるので現在アクティブなファイルは 同じのままという条件で のどちらかを教えてください。 ちなみに、 http://www.rfs.co.jp/server/apache/06.html の方法はhttpd.pidがwhereisとかfind探しても見つからないという 理由により挫折してますのでこれはアドバイスしないでください。 見つける方法がわかればそれでもまあいいのですが。

  • ApacheのBasic認証のログの取り方

    質問させて頂きます。 現在ホームページを作成しているのですが、 ホームページ内のあるページにアクセスする際にBasic認証をかけ、 こちらが発行するIDとパスワードを持っている人しかページを表示できないようにしたいと考えています。 そして、認証したときは時刻、ID、リモートアドレス等の情報のログを取りたいのですが、ログを取るには何が必要でしょうか? スクリプトとか必要なのでしょうか? はじめてBasic認証をやるので何もわからない状態です。 よろしくお願いします。

  • レンタルサーバで、error.logが見たい

    Rubyで作成したCGIをレンタルサーバに置いて実行すると、"500 Internal Server Error"になってしまいます。 Apacheでいうところのerror.logを見れば、デバックの助けになるのかと思いますが、私が借りている無料レンタルサーバでは、error.logを見ることが出来ません。 無用のレンタルサーバで、error.logを見ることの出来るサーバをご存知でしたら、紹介して下さい。 もしくは、代替案ございました、教えてください。

  • apacheとドット・ゲートサービス

    NECのパソコンを購入しましたが、NECのパソコンにははじめからapacheが入ってるんですね。 で、早速apacheを起動して、http://localhost/と打つと・・・ IDとパスワードを要求されました。ドット・ゲートサービスというものらしいです・・・ ドット・ゲートサービスをアンインストールしましたがやはりIDとパスワードを要求されます。 ・・・これはどうすればいいのでしょうか? よろしくお願いします。

  • 【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達は表示されてしまうのですが、 このようなエラーログを表示させなくと言うのは出来るのでしょうか? 宜しくお願いします。

  • Apacheのログからアクセス履歴をWeb表示するのにCGIは必要?

    Apacheのログ(/usr/local/apache/logs/access_log)を利用して アクセスカウンタのようなものを作りたいと考えています。 月毎の使用数を調べ、それを棒グラフ(PNGフォーマット)で表示させる、といったものです。 これをつくるにあたりCGIは必要なのでしょうか。 もし必要であれば、どのように使うのでしょうか。 ちなみに、開発環境は FreeBSD ver3.4, Apache ver1.3, perl ver5.005_03で、 ブラウザ(Netscape Navigator 4.7)で 本に掲載されていたCGIプログラムを動かしてみたところ 実行できませんでした。 #HTML文書が表示されるだけで #そのHTML文書が意図する表示はされなかった。 ○このApacheはCGIが使えているのか ○アクセスカウンタにCGIは必要かどうか を教えていただけたらと思います。 よろしくお願いします。

  • ApacheでCは使える?

    こんにちわ。 今CGIについて勉強しています。 Perlをメインに勉強しているのですが、複雑な処理は得意なCでCGIを作成しようと思っています。 そこで、ApacheでCを使いたいと思っているのですが、 具体的な使用方法が分かりません。 Apacheの設定方法など詳細な説明をお願いします。

    • 締切済み
    • CGI
  • Apacheの設定について

    WindowsXP SP2 のローカルでCGIを動作させるために  http://www.adminweb.jp/apache/ を参考に下記を試みました。 (1)Apache ダウンロード・インストール・接続確認   「http://localhost/」へアクセスして「It works!」表示確認    (htdocs ディレクトリの index.html) (2)ActivePerlインストール    perl -v perl -h で動作確認 (3)CGI用エイリアスの設定    ScriptAlias /cgi-bin/ "C:/SERVER/Apache/cgi-bin/" (4)以下の test.pl を C:/SERVER/Apache/cgi-bin/ に設置    ------------------------------------------------------    #!C:/Perl/bin/perl.exe print "Content-type: text/html;\n\n"; print "<html><body><h1>test cgi</h1></body></html>\n";   -------------------------------------------------------    http://localhost/cgi-bin/test.pl の実行で    「Internal Server Error」になってしまいます。 どこの設定が間違っているのか見当がつきません。 何卒ご指導宜しくお願い致します。

  • opendir apache 絶対url

    apache上でcgi-bin/ファイル.cgiのファイル.cgiから特定のディレクトリハンドルを開くために #!/perl/perl/bin/perl -wT use strict; use CGI::Carp qw(fatalsToBrowser); opendir DH, "http://localhost/image/"; opendir DH, "http://localhost/image/" or die "error"; for (readdir DH){ print; } としたのですが オープンできません opendirのパスに絶対urlや相対urlを使用する方法はありませんか?

  • C言語のapacheの設定

    apacheを使うとC言語で作ったプログラムもCGIで動かせると聞きました httpd.confをいじるとC言語でも表示されるらしいのですがいじり方が分かりませんでした。 どのようにいじればC言語を動かせますか? apacheのバージョンはapache_1_3_12_win32です。 普通の(perlでの製作)cgiの拡張子のは動かせます。

    • 締切済み
    • CGI

専門家に質問してみよう