2011-07-28 10 views
0

私はtest.pyを私のウェブサーバのcgi-binフォルダに入れています。実行すると、500 Internal Server Errorになります。私は間違って何をしていますか?コードは次のとおりです。Python CGIエラー

#!/usr/bin/python 
import os 
print "Content-type: text/plain\n\n" 
print "hi" 

どのようなアクセス許可が必要ですか?

+1

スクリプトは実行可能ですか? (chmod + x test.py)? pythonは実際に/ usr/bin/pythonにありますか? (apacheの設定方法) コマンドラインからスクリプトを実行するとどうなりますか? – lazy1

+1

詳細を記入してください。どのウェブサーバーを使用していますか? Apache?どのユーザーが実行中ですか?ログには何が入っていますか?あなたのファイルの許可は何ですか? – msbrogli

+0

スクリプトは実行可能ですが、Pythonはそこにあり、Apacheがどのように設定されているかはわかりませんが、コマンドラインでうまく動作します。 Webfactionを使用して、どのログを確認するかわからない場合、許可は755 ATMです。 – tekknolagi

答えて

2

これは有効なHTTP出力を生成しません。 HTTP仕様では、1行に2文字が必要です。末尾は\r\nです。

また、シェルからスクリプトを実行してみてください。また、サーバーからのデバッグログも参照してください。

+0

ログ以外のものはすべて削除しました。彼らがどこにいるのか分かりません。まだ動かない。 – tekknolagi

+0

'/ var/log/httpd'や'/var/log'のどこかで調べてみてください。 – Keith

1

効果、 使用CR-LFの行末をヘッダ行の終わりをマークするために空の行を追加する:

#!/usr/bin/python 
import os 
print "Content-type: text/plain\r\n\r\n" 
print "hi" 

あるいは、醜いバックスラッシュせず、空print statemanet追加:

#!/usr/bin/python 
import os 
print "Content-type: text/plain" 
print 
print "hi" 
+0

OPには既に必要な空白行( '\ n \ n')があります –

+0

まだ500エラー – tekknolagi

+0

申し訳ありません、試してみてください。\ r \ n – gimel