Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

run python script as cgi apache server

Tags:

python

apache

cgi

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.

like image 651
biggdman Avatar asked Apr 08 '13 11:04

biggdman


People also ask

How do I run a CGI script in Apache?

Let's make it executable by typing a sudo chmod +x /var/www/cgi-bin/loggedin.sh and hit enter. We need to turn on an SELinux Boolean to allow CGI scripts. Type in clear and then type in sudo setsebool -P httpd_enable_cgi 1 and hit enter. Now let's restart Apache.


1 Answers

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!
"""
)
like image 130
Ahsan Habib Avatar answered Oct 08 '22 23:10

Ahsan Habib