CGIのデバッグ

フォームを作ってみたはいいけど、CGIでどのようなデータが飛んでくるのか最初はよくわからないことがあります。wireshark なんかで、ダンプしてみるのも手ですが、サーバ側でダンプしてみる方法を考えました。専用の CGIを 作成して、本来の CGI と置き換えることによって、クライアントの画面にダンプデータと言うか、クライアントから POST されたデータがそのまま表示されます。


200×200 高速大容量レンタルサーバ10G
mixhost

これ ↓↓↓ がそのコードです。csh で記述しています。

#!/bin/csh -f

echo Content-type: text/html
echo ""


set save = /tmp/CGIdata$$

echo '-------------------------  DATA  ---------------------------------------' > $save
cat >> $save
printf "\n\n\n\n" >> $save


echo '-------------------------   ENV  ---------------------------------------' >> $save
env >> $save
printf "\n\n\n" >> $save


echo '-------------------------   set  ---------------------------------------' >> $save
set >> $save
printf "\n\n\n" >> $save

echo '------------------------------------------------------------------------' >> $save


echo '<TITLE>CGI raw data</TITLE>'
echo "<HTML><BODY>"
echo '<CENTER><H2>CGI raw data</H2></CENTER><PRE>'
cat $save
rm -rf $dave
echo "</PRE></BODY></HTML>"

前半で、クライアントから送られてきたデータと環境変数などをテンポラリファイルに入れています。後半は、HTMLでその中身を送り返しています。ただそれだけなんですが、簡単なCGIのデバッグには有効です。複雑なものは無理ですが。

いかがでしたか。CGI なんてもう古いかもしれませんが、ちょっとしたものに使いたくなるときがありますが、動かずに苦労することがあります。そんな時にお役に立てればと思います。