如何在我的服务器上运行Python脚本?

4 投票
2 回答
8003 浏览
提问于 2025-04-16 15:37

我有一个由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

撰写回答