2011-07-20 21 views
2

私の.pyファイルは、端末の[OK]を実行しますが、ブラウザここ内部サーバーエラー500 - パイソン、CGI

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>500 Internal Server Error</title> 
</head><body> 
<h1>Internal Server Error</h1> 
... 
... 

の.pyファイルでは、このエラーを与える:

#!/usr/bin/python 
import cgi 
import cgitb; cgitb.enable() 
print "Content-Type: text/html\n\n"  # HTML is following 
print         # blank line, end of headers 

print "<TITLE>CGI script output</TITLE>" 
print "<H1>This is my first CGI script</H1>" 
print "Hello, world!" 

は、私がすべきこれを.cgiファイルとして保存していますか?私は同じエラーで試してみましたが、私はこのような多くのファイルを試しましたが、何の仕事もありませんでした。問題なく同じディレクトリから実行されている他の.cgiスクリプトがあるので、Apacheサーバが動作していると確信しています。

私も試してみました!: #は/ usr/local/bin/pythonの& ます。#/ usr/binに/ローカル/ pythonの

感謝すべてのヘルプを。

EDIT エラーログ出力: (2)そのようなファイルまたはディレクトリ:test.py: '.../.../.../test.py' の幹部は、スクリプトのヘッダの 早期の終了を失敗しました

+1

正しい '#!/ usr/bin/env python'はどうでしょうか?なぜCGIを使っているのですか?廃止された以上のものです。編集:CGIを使用してスクリプトを提供する必要がある場合は、CGI経由でWSGIアプリケーションを提供することをお勧めします。 – schlamar

+0

はい私は/ env pythonを試しました。 CGIは簡単に設定できました。ある程度までは、私はすでに多くのPythonコードを書いています。 – Kilizo

+0

WSGIははるかに簡単で、移植は簡単です。フラスコまたはボトルのフレームワークを見てください。 – schlamar

答えて

0

これまでに書いたことがあります。これらは、Python CGIのトラブルシューティングを行うときに探すべき良い点です。

PythonをCGIで動作させるためのヒントがいくつかあります。

Apacheの設定:

Options Indexes FollowSymLinks ExecCGI 
    AddHandler cgi-script .cgi .py 
  1. を常にApacheの経由ページを閲覧:これは、設定で次のように変更することでCGIとしてPythonを追加し、古い

    かもしれません。 ブラウザを介してファイルシステム内のファイルを表示することは、HTMLページ上のほとんどのものに対して機能しますが、CGIでは機能しません。スクリプトを動作させるには、htdocsファイルシステムを介して開く必要があります。ブラウザのアドレス行は次のようになります:

    \\127.0.0.1\index.html or 
    \\localhost\index.html 
    

    ファイルシステムからファイルを開くと、CGIは機能しません。このような場合のように、これは、ブラウザのロケーションバーにされています

    c:\Apache\htdocs\index.html (or some other example location) 
    
  2. Unixのフォーマットにスクリプトの行の終わりを変換します ほとんどの編集者は、オプションは「ラインのショーの終わり」に持って、その後から変換するツールUnixからPCへのフォーマット。行末をUnix形式に設定する必要があります。

  3. 州CGIスクリプトの最初の行にPythonインタプリタへのパス:

    #!C:\Python25\Python.exe 
    #!/usr/bin/python 
    

    トップライン:あなたはあなたのPythonのCGIスクリプトの最初の行として次の行のいずれかが必要 PCでデバッグしているときに使用され、一番下は1と1などのサーバー用です。私は表示されているように行を残し、一度最初の行を削除することによって、サーバー上にいれば編集します。他の出力を印刷する前に、HTMLを指定

  4. 印刷コンテンツタイプ: これは非常に早いスクリプト内のどこかに以下の行を追加することで簡単に行うことができますラインの2端が必要であることを

    print "Content-Type: text/html\n\n" 
    

    注意。

  5. デバッグ情報を提供するPythonスクリプトの設定: 詳細なデバッグ情報を取得するには、次のものをインポートします。

    import cgitb; cgitb.enable() 
    

    cgitbが利用できない場合の代替は、次の操作を行うことです:Pythonスクリプトのパーミッションを実行するように設定されている必要があり、サーバー上で

    import sys 
    sys.stderr = sys.stdout 
    
  6. 。 ファイルをアップロードした後、最初の行を編集し、実行するファイルのアクセス許可を設定してください。

pythonスクリプトを直接実行できるかどうかを確認してください。できない場合は、上記の手順で修正してください(2-6)。その後、Pythonスクリプトが動作しているときに、shtmlをデバッグします。

関連する問題