2012-04-20 10 views
0

私はcgiとPythonを初めて使いました。だから私はかなりの間違いをしてきました。問題は、何かスクリプトに問題が生じた場合、Webページで500エラーが発生することです。エラーの原因を見ることができる唯一の方法は、ssh経由でページを実行することですが、ページにはファイルのアップロードが含まれるため、その部分をテストすることはできません。WebサイトにPythonエラーが記録されていますか?

Pythonエラーをファイルに出力する方法はありますか?

+0

サーバー上のログファイルを表示すると何が問題になりますか? – sarnold

答えて

2

そこにオプションのカップルは監督のことができます尾サーバーのエラーログとしてロギングモジュールを使用して、であり、あなたは、エラーが発生した場所を正確に依存import cgitb; cgitb.enable()

でcgitbを有効にすることができ、エラーが表示されます3つすべてをチェックし、printステートメントと例外ブロックを使用するとコードをデバッグするのに役立ちます。

ファイルのアップロードでは、フォームタグにenctype="multipart/form-data"と明示的に記載する必要があることが判明しました。それはしばしば静かに壊れます。

+0

私はまだ500 – mowwwalker

+0

を除いて何も得ていません。それらは間違いなくいくつかの情報を含むサーバーエラーログに表示されるはずです。一般的に私は、 "" Content-type:text/html ""という文字列を渡すのを忘れてしまったり、構文エラーがありました。もしPythonが何らかの例外を発生させないのであれば、 "ファイル"/usr/share/bdot/cgi/call "のようなログ、15行目 ステータス、junk = commands.getstatusoutput( 'ssh [email protected] pwd ^ SyntaxError:文字列リテラルをスキャン中のEOL' – TaoJoannes

+1

Wow Filezillaはパーミッションを変更していたので、変更しなければなりませんでした。私がやった後、私は意図的にこれをテストするコードを壊してしまったので、次回に試してみます。 – mowwwalker

1

はいあります。 Pythonには、あなたが望むだけのことをすることを可能にするロギングモジュールがあります。 Hereあなたはドキュメントを読むことができます、それは理解しやすいです。

+0

エラーが発生しても、ファイルに何も印刷されません。 sshからチュートリアルのメッセージがファイルに書き込まれますが、ブラウザからページを表示しようとすると、まだ500エラーが表示され、ファイルには何も表示されません。 – mowwwalker

+0

まあ、それは魔法ではありません。表示したいメッセージとともにロギングモジュールを使用してエラーを記録する必要があります(例外の簡単な説明、おそらくエラーの完全なトレース)。例によって: '試してみてください。 execute_function(自己)例外を除いて 、E: logging.errorを( 'Iがエラーを検出しましたわが主:\ n個の\ tの|%s' は、E) ' – Omar

+0

は私がでログインして設定ページの先頭に何も記録されていませんでした。 – mowwwalker

関連する問題