何よりもまず、些細なインストール関連のエラーでないか確認してください -- 上の CGI スクリプトのインストールに関する節を注意深く読めば 時間を大いに節約できます。もしインストールの手続きを正しく理解 しているか不安なら、このモジュールのファイル (cgi.py) をコピーして、CGI スクリプトとしてインストールしてみてください。 このファイルはスクリプトとして呼び出すと、スクリプトの実行環境と フォームの内容を HTML フォームに出力します。 正しいモードなどをフォームに与えて、リクエストを送ってみてください。 標準的な cgi-bin ディレクトリにインストールされていれば、 以下のような URL をブラウザに入力してリクエストを送信できるはずです:
http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow&addr=At+Home
もしタイプ 404 のエラーになるなら、サーバはスクリプトを発見 できないでいます - おそらくあなたはスクリプトを別のディレクトリ に入れる必要があるのでしょう。他のエラーになるなら、先に進む前に 解決しなければならないインストール上の問題があります。 もし実行環境の情報とフォーム内容 (この例では、 各フィールドはフィールド名 ``addr'' に対して値 ``At Home''、および フィールド名 ``name'' に対して ``Joe Blow'' ) が綺麗にフォーマット されて表示されるなら、 cgi.py スクリプトは正しくインストールされています。 同じ操作をあなたの自作スクリプトに対して行えば、スクリプトをデバッグ できるようになるはずです。
次のステップでは cgi モジュールの test() 関数を 呼び出すことになります: メインプログラムコードを以下の 1 行、
cgi.test()
と置き換えてください。この操作で cgi.py ファイル自体を インストールした時と同じ結果を出力するはずです。
通常の Python スクリプトが例外を処理しきれずに送出した場合 (様々な理由: モジュール名のタイプミス、ファイルが開けなかった、など)、 Python インタプリタはナイスなトレースバックを出力して終了します。 Python インタプリタはあなたの CGI スクリプトが例外を送出した場合 にも同様に振舞うので、トレースバックは大抵HTTP サーバのいずれかの ログファイルに残るかまったく無視されるかです。
幸運なことに、あなたが自作のスクリプトで 何らかの コードを 実行できるようになったら、cgitb モジュールを使って 簡単にトレースバックをブラウザに送信できます。まだそうでないなら、 以下の一行:
import cgitb; cgitb.enable()
をスクリプトの先頭に追加してください。そしてスクリプトを再度 走らせます; 問題が発生すれば、クラッシュの原因を見出せるような 詳細な報告を読めます。
cgitb モジュールのインポートに問題がありそうだと 思うなら、(組み込みモジュールだけを使った) もっと堅牢なアプローチを 取れます:
import sys sys.stderr = sys.stdout print "Content-Type: text/plain" print ...your code here...
このコードは Python インタプリタがトレースバックを出力することに 依存しています。出力のコンテント型はプレーンテキストに設定されて おり、全ての HTML 処理を無効にしています。スクリプトがうまく動作 する場合、生の HTML コードがクライアントに表示されます。スクリプト が例外を送出する場合、最初の 2 行が出力された後、トレースバックが 表示されます。HTML の解釈は行われないので、トレースバックを 読めるはずです。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。