web-dev-qa-db-ja.com

pythonスクリプトをcgiApacheサーバーとして実行

Apacheサーバーを使用してpythonスクリプトをcgiとして実行しようとしています。スクリプトは次のようになります:

  #!/usr/bin/python
  import cgi
  if __name__ == "__main__":

  print("Content-type: text/html")
  print("<HTML>")
  print("<HEAD>")

私はhttpd.confで必要な設定を行いました(私の意見では):

  <Directory "/opt/lampp/htdocs/xampp/python">
  Options +ExecCGI
  AddHandler cgi-script .cgi .py
  Order allow,deny
  Allow from all
  </Directory>

Chmodでスクリプトの実行権限を設定しました

ただし、ローカルホスト経由でスクリプトにアクセスしようとすると、headers:script.pyの前にエラー500:スクリプト出力の終了が表示されます。何が問題である可能性がありますか?スクリプトはUnixライクな環境で作成されているので、clrfとlfの問題は解決しないと思います。どうもありがとう。

8
biggdman

私はあなたが後に印刷ステートメントを逃していると思います

print("Content-type: text/html")

CGIスクリプトの出力は、空白行で区切られた2つのセクションで構成されている必要があります。最初のセクションには、どの種類のデータがフォローされているかをクライアントに伝えるいくつかのヘッダーが含まれています。

2番目のセクションは通常HTMLであり、クライアントソフトウェアがヘッダーやインライン画像などを含む適切にフォーマットされたテキストを表示できるようにします。

それは次のように見えるかもしれません

#!/usr/bin/env python

print "Content-Type: text/html"
print
print """
    <TITLE>CGI script ! Python</TITLE>
    <H1>This is my first CGI script</H1>
    Hello, world!
"""

詳細については、 python-cgi をご覧ください。

Python3の場合

#!/usr/bin/env python3

print("Content-Type: text/html")
print()
print ("""
    <TITLE>CGI script ! Python</TITLE>
    <H1>This is my first CGI script</H1>
    Hello, world!
"""
)
14
Ahsan Habib