0

ローカルの Apache 2.2.22 サーバーで完璧に動作する Python CGI スクリプトがあります。正しい結果などを出力します。しかし、仮想ホスティングで実行しようとすると、エラー 500 が発生します。なぜ機能しないのか、まったくわかりません。

Apache エラー ログは次のようになります。

[Wed Jul 12 16:06:54 2013] [error] [client 89.223.235.12] Premature end of script headers: /home/u67442/rrrrr.com/cgi-bin/test.py
[Wed Jul 12 16:09:31 2013] [error] [client 89.223.235.12] Premature end of script headers: /home/u67442/rrrrr.com/cgi-bin/test.py

私はすでに次のことを試しました:

  1. インタープリターへのパスは正しいと確信しています - #!/usr/local/bin/python。別の CGI スクリプトは、このパスで正常に動作します。
  2. このスクリプトに chmod 755 を設定しました。
  3. 行末文字を UNIX 形式で設定しました。
  4. 正しい HTTP ヘッダーを使用します。print "Content-type:text/html\n\n"

スクリプトの出力セクション:

    print "Content-type:text/html\n\n"
    print "<html>"
    print "<head>"
    print "<title>Results</title>"
    print "<head><h2 align=center>Results</h2></head>"
    print "</head>"
    print '<body bgcolor="#e8f3d8">'
    print "<hr>"
    print "<b>Result = %s </b>" % str(round(total_sum, 5))
    print "</body>"
    print "</html>" 

同じパス、ヘッダー、EOL、出力などを持つ別の非常によく似たスクリプトが、ローカル サーバーと仮想ホスティングで完璧に機能するのはおかしいです。このスクリプトが私のローカル Apache では問題なく動作するのは非常に奇妙ですが、仮想 Web ホスティングでは 500 内部サーバー エラーでクラッシュします。どうすればいいのか本当にわかりません。テクニカル サポートでは、スクリプトに問題があるとのことです。

アイデアは 1 つだけです - 出力待機のタイムアウトです。私のスクリプトでのデータ処理には、約 15 ~ 25 秒かかります。

何をアドバイスできますか?

4

2 に答える 2

0

問題が解決しました。問題はスクリプトにありました。「while」ループの 1 つから *.dat ファイルからデータを抽出する関数を置き換えます。とにかく、なぜそれがローカルサーバーで機能し、仮想ホスティングで機能しなかったのか、まだわかりません。

于 2013-07-17T18:59:03.740 に答える
0

error_log を確認してください。
可能であれば、仮想ホストのコマンド ラインからスクリプトを実行します。
できる場合は、su - webserveruser して、もう一度やり直してください。
サーバーに存在しないモジュールをインポートしようとしていますか?
webserver プロセスには、total_sum で終わるデータを取得する権限がありますか?
問題を絞り込むには、total_sum の値をハードコーディングし、データを取得して計算するコードをコメントアウトしてみてください。残りはうまくいきますか?
仮想ホストは、ローカル サーバーと同じバージョンの Python を実行していますか? そうでない場合は、コードが両方のバージョンで機能することを確認してください。

于 2013-07-17T11:37:06.537 に答える