简体   繁体   中英

CGIHTTPServer and Python script

I am currently writing a python program which prints HTML page using sys.stdout.print() the script name is hellocgi.py and it is inside a cgi-bin directory on the Desktop on my Mac OS X.

Here is the code:

import sys
sys.stdout.write("Content-type: text/html \r\n\r\n")
sys.stdout.write("<!doctype html><html><head><title>Hello World</title></head>")
sys.stdout.write("<body><h2>Hello CGI</h2></body></html>")

Then I am running the command python -m CGIHTTPServer inside the cgi-bin directory, and when I am going to the url localhost:8000/hellocgi.py what I get is the source code inside firefox.

If I try to run python -m CGIHTTPServer outside the cgi-bin, I get an error on url localhost:8000/cgi-bin/ :

Error response

Error code 403.

Message: CGI script is not a plain file ('/cgi-bin/').

Error code explanation: 403 = Request forbidden -- authorization will not help.

On URL localhost:8000/cgi-bin/hellocgi.py firefox prompt me to download the source code.

Python version: 2.7.5 Mac OS X: 10.9

python -m CGIHTTPServer log:

Serving HTTP on 0.0.0.0 port 8000 ...
127.0.0.1 - - [24/Jun/2014 18:34:49] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [24/Jun/2014 18:34:51] code 403, message CGI script is not a plain file ('/cgi-bin/')
127.0.0.1 - - [24/Jun/2014 18:34:51] "GET /cgi-bin/ HTTP/1.1" 403 -
127.0.0.1 - - [24/Jun/2014 18:36:01] "GET /cgi-bin/hellocgi.py HTTP/1.1" 200 -
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/CGIHTTPServer.py", line 253, in run_cgi
    os.execve(scriptfile, args, env)
OSError: [Errno 13] Permission denied
127.0.0.1 - - [24/Jun/2014 18:36:01] CGI script exit status 0x7f00
^CTraceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/CGIHTTPServer.py", line 378, in <module>
    test()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/CGIHTTPServer.py", line 374, in test
    SimpleHTTPServer.test(HandlerClass, ServerClass)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SimpleHTTPServer.py", line 216, in test
    BaseHTTPServer.test(HandlerClass, ServerClass)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 599, in test
    httpd.serve_forever()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 236, in serve_forever
    poll_interval)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 155, in _eintr_retry
    return func(*args)

Any help?

#!/usr/bin/python
import sys
sys.stdout.write("Content-type: text/html \r\n\r\n")
sys.stdout.write("<!doctype html><html><head><title>Hello CGI</title></head>")
sys.stdout.write("<body><h2>Hello CGI</h2></body></html>")

and add premision to the file chmod +x querys.py

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM