0

このプロジェクトでは、Web サイトに Python を使用する必要があります。500 ページを取得する代わりに、ブラウザーに表示されるエラーを探しています。ヒントはありますか?
さらに
、私は単純なCGIを使用しているだけです。ここで説明したようにこれを試しましたが、機能しません

#!/usr/bin/env python
print "Content-Type: text/plain"
print
import sys
sys.stderr = sys.stdout
f = open('non-existent-file.txt', 'r')
4

2 に答える 2

2

Python Web フレームワークの設定によって異なります。

たとえば、Pyramid フレームワークには、Web ブラウザーでトレースバックを有効にし、対話型のデバッグ セッションを開始するためのさまざまな設定があります。

http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/narr/introduction.html#debugging-settings

それはすべて、Python Web アプリケーションがどのように接続されているか、どのアーキテクチャを使用しているかなどによって異なります。さらに支援が必要な場合は、質問に完全なコンテキスト情報を含めてください。

Python と WSGI を使用した Web アプリケーションのデバッグに関する詳細情報:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques

フレームワークを使用していない場合は、メイン レベルの try...except ブロック内にすべてを配置する必要があります。これは、Python 標準ライブラリが例外を HTML に変換するツールを提供していないためです。

  import traceback

  try:
       ...
  except Exception as e:
       # Set content type as text/plain (don't know how)
       traceback.print_exc(e)  # Print out exception as plain text
于 2013-02-22T19:37:38.670 に答える
0

error.logのエラーを読み取るスクリプトを作成することになりました。したがって、同じタブでエラーを取得する代わりに、別のタブがあります。ただし、システムに関する情報を提供しないように、スクリプトを削除することを忘れないでください。

#! /opt/python3/bin/python3
#Error Log Viewer

import subprocess

p = subprocess.Popen('cat /var/log/apache2/error.log | tail -5', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

print ('Content-type: text/html\n\n') 
print (''' 
<!DOCTYPE html >
<html> <head></head> <body>''')
for line in p.stdout.readlines():
    print (line,'<br>')
print('''</html></body>''')
于 2013-03-23T10:52:32.547 に答える