KCatch ニュース


KCatch.pm 紹介ページを設置しました。
最近は execdata オプションよりも、ファイルの分離をお勧めしています。
KCatch.pm スクリプト自体のバージョンアップは 2002年から停止していますが、 単にバージョンアップの必要がないだけなので、 現在も従来通りバージョン 1.13 をご利用いただけます。 :-)



KCatch ニュース (2004/07/06)


ニュースはないので、Google AdSense を入れてみました。


KCatch ニュース (2002/07/01)


バグフィックスバージョン 1.13 を緊急リリース

この1年半、お陰さまで KCatch.pm は安定稼動していたかと思いきや、 バグが残っていました。修正した バージョン 1.13を緊急リリースしました。

旧バージョン 1.11 では エラーメッセージ中の &・<・> 文字が HTML モードで正しくエスケープ処理されていませんでした。 (バージョン 1.10 までは問題ありません)
CGI 側の出力するエラーメッセージの内容に寄ってはクロスサイトスクリプティングの脆弱性となる可能性があります。

ただし、CGI 側でエラーが発生したときに、 悪意のある利用者が書き込んだクエリなどの内容を エラーメッセージに出力している場合のみに発生します。

その他の 1.13 細かい修正点 バージョンアップの手順

最新バージョンをダウンロードして、 従来の KCatch.pm を置き換えてください。
基本的に CGI の変更は不要で、KCatch.pm を変えてもそのまま動きます。

バージョン 1.11 をご利用の方は、できるだけバージョンアップしてください。
CGI 側でエラーメッセージ出力前に正しくクエリ処理が行われている場合や、 バージョン 1.10 以下の場合は、必ずしも置き換える必要はありません。
Apache・OpenSSH・libc といろいろ大変な昨今ですが、お手数かけます。 m(..)m


KCatch ニュース (2000/12/16)


バグフィックスバージョン 1.11 をリリース

先週リリースした バージョン 1.10には、 execdata オプションを使用した状態で require した外部ファイル中でのエラーが発生した時に、 正しいエラー位置を取得できないなどのバグがあることが判明しました。 これらのバグを修正した バージョン1.11をリリースします。
なお、execdata オプションを使用しない場合は 1.10 でも弊害はありませんが、 新しいバージョン1.11か、execdata のない バージョン1.07 の利用をお勧めします。


execdata オプションの制限

1.10 以降で使用可能な execdata オプションには、以下の制限があります。 ただし、これらの制限は、execdata オプションを使用しない場合は関係ありません。
スクリプトの冒頭で use KCatch qw( execdata );__DATA__ するのをお勧めします。


KCatch ニュース (2000/12/09)


KCatch.pm の新バージョン 1.10 をリリースしました!

従来の KCatch.pm は、use KCatch しているソース自身にあるエラーの捕捉が イマイチ弱いところがありました(特に Perl 文法エラーの場合)。 今回リリースした新バージョンによる execdata オプションは、その use KCatch しているソース自身にあるエラーすらも、ほぼ確実に捕捉できます!
また今回のリリースでは、日本語の文字化けを回避する jcode= オプションも 追加しています。
その他については、マニュアルを参照してください。

これまで既に use KCatch していた方へ

この強力なオプションを使うためには、CGIプログラム側の変更が必要です。(1ヶ所のみ)

  1. KCatch.pm 最新版をダウンロードする
  2. CGIと同じディレクトリか、@INC のディレクトリにある KCatch.pm を置き換える
  3. 従来、CGIスクリプトの冒頭で
    use KCatch;
    とだけ書いていた行を、
    use KCatch qw( execdata );__DATA__
    と書き換えてください。(必ず __DATA__ までが必要です)
はじめて use KCatch してみる方へ

KCatch の快適な世界へようこそ! 恐らく、今までの苦労に涙が出てくることうけあい!(笑)

  1. KCatch.pm 最新版をダウンロードする
  2. CGIと同じディレクトリか、@INC のディレクトリに KCatch.pm をアップロードする
  3. CGIスクリプトの冒頭に、
    use KCatch qw( execdata );__DATA__
    の1行を追加するだけ。(必ず __DATA__ までが必要です)
  4. 試しにバグを付けてみたり、warn "Hello, World!!\n"; を追加してみると・・・(!!)
CGI開発時のお勧めオプション

ちょっと長くなってしまいますが、 CGIプログラムの開発時にお勧めのオプションはこんな感じです。

use KCatch qw( jcode=euc source stderr execdata );__DATA__

また、CGIプログラムのデバッグ出力は、ありがちな print 文でなく warn 文を使うと、 KCatch 経由でまとめて表示されるので便利です。 (とはいえ warn を大量に呼び出すと遅くなるので、呼び出し回数はある程度に)
その他のオプションについては、マニュアルを 参照してください。

__DATA__ トークンに関する注意点

execdata オプションで使用している __DATA__ トークンは 1ソースファイルで1度しか使えません そのため、既に __DATA__ トークンを使用している CGI プログラムでは、 この「救世主」execdata オプションも残念ながら使用できません。 その場合は、execdata オプションを付けずに通常の KCatch をご利用ください。

KCatch でも捕捉出来ないエラー

KCatch が補足できるのは、 use KCatch の行が実行された場合の、それ以降の行にあるエラーのみです。 use KCatch の行が実行できない場合や、 何もエラー(die・warn)が発生しない場合も、捕捉出来ません。 KCatch を使ってもなお Internal Server Error などが出る場合は、 以下の原因が考えられますので、参考にしてください。
KCatch.pm の不具合情報や、ご意見・ご要望をお待ちしております。
Copyright 1999-2002 Kawasaki Yusuke <u-suke [at] kawa.net> and Kappe Inc.