8

I am trying to make a python script run as cgi, using an Apache server. My script looks something like this:

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

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

I have done the necessary configurations in httpd.conf(in my opinion):

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

I have set the execution permission for the script with chmod

However, when I try to access the script via localhost i get an Error 500:End of script output before headers:script.py What could be the problem? The script is created in an Unix like environment so I think the problem of clrf vs lf doesn't stand. Thanks a lot.

biggdman
  • 2,028
  • 7
  • 32
  • 37

1 Answers1

14

I think you are missing a print statement after

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

The output of a CGI script should consist of two sections, separated by a blank line. The first section contains a number of headers, telling the client what kind of data is following.

The second section is usually HTML, which allows the client software to display nicely formatted text with header, in-line images, etc.

It may look like

#!/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!
"""

For more details visit python-cgi

For 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!
"""
)
Ahsan Habib
  • 174
  • 2
  • 5
  • Thanks a lot, I have unsuccessfully tried `\n\n` and Python 2 syntax (Xampp and Python 3). – Zso Jan 29 '17 at 20:49