CGIHTTPServer和Python脚本
我现在正在写一个Python程序,这个程序可以打印出一个HTML页面,脚本的名字叫做hellocgi.py,放在我Mac OS X桌面的cgi-bin文件夹里。
这是我的代码:
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>")
然后我在cgi-bin文件夹里运行命令python -m CGIHTTPServer
,当我访问网址localhost:8000/hellocgi.py
时,结果却是在Firefox浏览器里显示了源代码。
如果我在cgi-bin文件夹外运行python -m CGIHTTPServer
,当我访问网址localhost:8000/cgi-bin/
时,就会出现一个错误:
错误响应
错误代码 403。
消息:CGI脚本不是一个普通文件('/cgi-bin/')。
错误代码解释:403 = 请求被禁止 -- 授权也无济于事。
在网址localhost:8000/cgi-bin/hellocgi.py
上,Firefox会提示我下载源代码。
Python版本:2.7.5
Mac OS X版本:10.9
运行python -m CGIHTTPServer
的日志:
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)
有没有人能帮帮我?
1 个回答
0
#!/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>")
并给这个文件添加权限,使用命令 chmod +x querys.py