8

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でスクリプトの実行権限を設定しました

ただし、localhost 経由でスクリプトにアクセスしようとすると、Error 500:End of script output before headers:script.py が表示されます。何が問題なのですか? スクリプトは Unix ライクな環境で作成されているため、clrf と lf の問題は存在しないと思います。どうもありがとう。

4

1 に答える 1

14

後にprintステートメントが欠落していると思います

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!
"""
)
于 2013-04-08T15:19:34.900 に答える