4

私は hostgator を使用しており、彼らは python がサポートされていることを誓っていますが、動作する python スクリプトはまだ見たことがありません。私はいくつかのスクリプトを試しましたが、私の最新のものは彼らのウェブサイトで提供されているものです:

#!/usr/bin/python
print "Content-type: text/html\n\n";
print "<html><head>";
print "<title>CGI Test</title>";
print "</head><body>";
print "<p>Test page using Python</p>";
print "</body></html>";

内部サーバー エラーが発生しました: http://elkuzu.com/cgi-bin/test.py

ファイルには 755 のアクセス許可があり、フォルダー cgi-bin もそうです。彼らは、彼らが「コーディング」の問題と呼んでいるものについて私を助けることを拒否しました...しかし、私が試したすべてのことで、内部サーバーエラーしか受け取りませんでした.問題は彼らにあると思います. 誰が何が間違っている可能性があるか知っていますか?

エラーログ:

[Sat May 19 09:11:38 2012] [error] [client 74.129.48.242] File does not exist: /home/elkuzu/public_html/404.shtml
[Sat May 19 09:11:38 2012] [error] [client 74.129.48.242] File does not exist: /home/elkuzu/public_html/favicon.ico
[Sat May 19 09:11:37 2012] [error] [client 74.129.48.242] File does not exist: /home/elkuzu/public_html/500.shtml

私はホスト (hostgator) と話しましたが、彼らはそれをチケットに変えました。

4

2 に答える 2

7

Python を CGI として使用する方法に関するドキュメントがあります。

あなたの場合、問題は行末でした。これらは、各行の末尾にある隠し文字です。

Unix ライクなシステムでは、プログラム ファイルの行末は Unix スタイルの行末でなければなりません。Web サーバーはスクリプトの最初の行 (shebang と呼ばれる) をチェックし、そこで指定されたプログラムを実行しようとするため、これは重要です。Windows の行末 (Carriage Return & Line Feed、CRLF とも呼ばれます) と混同されやすいため、ファイルを Unix の行末 (Line Feed、LF のみ) に変換する必要があります。これは、バイナリ モードではなくテキスト モードで FTP 経由でファイルをアップロードすることによって自動的に実行できますが、推奨される方法は、ファイルを Unix 行末で保存するようにエディタに指示することです。ほとんどの編集者はこれをサポートしています。

Windows (メモ帳など) では (CR LF または\r\n) として表されますが、UNIX では (LF または\n) です。

Notepad++ では、次のように行末を記号として表示できます: View -> Show Symbol -> Show End of Line

Windows の改行を UNIX の改行に置き換えるには、検索 -> 置換... を使用できます。

置換ダイアログで、 を見つけ\r\nて に置き換えます\n。拡張検索モードが選択されていることを確認します。

Notepad++ 置換ダイアログのスクリーンショット


または、[編集] -> [EOL 変換] -> [UNIX 形式] を使用できます。

Notepad++ EOL 変換のスクリーンショット

于 2012-05-19T14:10:32.213 に答える
0

これは古い質問であることは知っていますが、hostgatorでも500エラーが発生していました(1年前に試行をやめたことを指摘するため)。数日前、「チュートリアル」に従ってもう一度試してみることにしましたが、やはりうまくいきませんでした。

私はもっ​​と簡単なことを試します:

#!/usr/bin/python
import sys
print sys.version_info

再び 500 エラーが発生しましたが、サポートとチャットした後、次のようなログ メッセージが表示されました。

[エラー] [クライアント 192.xxx] スクリプトのヘッダーの形式が正しくありません。不正なヘッダー=(2, 6, 6, 'final', 0): test1.py

その情報(ログメッセージにpythonが含まれていたため、何らかの方法で実行されていました)で、Unixサイトでこの投稿を見つけました。

HTTP 仕様 (および HTTP サーバーからのエラー メッセージ) で指定されているように、HTTP ヘッダーと本文の間に 1 行の空白行が必要です。そうしないと、サーバーはヘッダーがどこで終わり、本文が始まるかを認識できません。

スクリプトを次のように変更しました。

#!/usr/bin/python
print ""
import sys
print sys.version_info

そしてそれは働いた!奇妙なことに、このスクリプトを正常に実行した後、チュートリアルの例 (以下のコード) も機能するようになりました。

#!/usr/bin/python
print "Content-type: text/html\n\n";
print "<html><head>";
print "<title>CGI Test</title>";
print "</head><body>";
print "<p>Test page using Python</p>";
print "</body></html>";

なぜ今それが機能するのですか?手がかりはありませんが、少なくともこの回答が、ホストゲーターの[不足]サポートに対処するのに役立つことを願っています.

于 2016-06-07T00:52:39.537 に答える