如何在我的服务器上运行Python脚本?
我有一个由Blueshot托管的服务器。我之前一直用php从iPhone获取POST变量……但现在我需要用python来获取这些变量。我写了类似下面的代码:
import cgi
import cgitb; cgitb.enable() # for troubleshooting
print "Content-type: text/html"
print
print """
<html>
<head><title>Sample CGI Script</title></head>
<body>
<h3> Sample CGI Script </h3>
"""
form = cgi.FieldStorage()
message = form.getvalue("message", "(no message)")
print """
<p>Previous message: %s</p>
<p>form
<form method="post" action="index.cgi">
<p>message: <input type="text" name="message"/></p>
</form>
</body>
</html>
""" % message
然后把它上传到我的服务器,但它不工作……如果我直接打开这个页面,它只显示源代码。我不知道我的服务器上是否安装了python(我觉得可能默认就安装了)……我该怎么检查我的服务器上python是否可以运行,如果不能,我该如何在服务器上运行python脚本?我只想从iPhone获取POST变量(我知道怎么从iPhone发送这些变量)。谢谢!
2 个回答
0
这是一个网页服务器的配置问题,不是编程方面的问题。
如果你在使用Apache服务器,可以试试这个方法:
chmod 755 myscript.py
ln -s myscript.py myscript.cgi
然后把这个放到你的 .htaccess 文件里:
AddHandler cgi-script .cgi
如果你因为没有命令行访问权限而无法运行 ln
命令,那你可以直接上传带有 .cgi 后缀的文件。或者,正如 icktoofay 所说,把它放在你的 cgi-bin 文件夹里,这样你就不需要修改 .htaccess 文件了。
10
这里有一个小清单,可以帮助你检查CGI脚本为什么不工作的原因:
- 它是在一个
cgi-bin
(或者类似的)文件夹里吗? - 它是可执行的吗?
- 它是可读的吗?
- 它有哈希bang吗?
- 你的服务器设置好可以处理CGI脚本了吗?
这里有一个可以用来测试的CGI脚本示例:
#!/usr/bin/env python
import cgi; cgi.test()
把它命名为 test.py
,放在 cgi-bin
文件夹里,并确保它是可执行的:
$ chmod a+rx test.py
有些网络服务器只认某些扩展名的CGI脚本,所以如果 .py
不行,你可以试试 .cgi
。