问题描述
|
我有一个由Blueshot托管的服务器。我一直在使用php从iPhone获取发布变量...但是现在我不得不使用python从iPhone获取发布变量。我写了这样的东西
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是否可运行,如果没有,如何在服务器上运行python脚本?我要做的就是从iPhone获取POST变量(我知道如何从iPhone发送变量)预先感谢...
解决方法
这是CGI脚本无法正常工作时要检查的一小部分清单:
它在
cgi-bin
(或同等的文件夹)中吗?
它可执行吗?
可读吗?
它有哈希吗?
您的服务器是否设置为处理CGI脚本?
这是可用于测试的示例CGI脚本:
#!/usr/bin/env python
import cgi; cgi.test()
将其命名为test.py
,将其放在cgi-bin
中的某个位置,并确保其可执行文件:
$ chmod a+rx test.py
某些Web服务器只能识别带有某些扩展名的CGI脚本,因此如果.py
不起作用,则可能需要尝试.cgi
。
,这是一个网络服务器配置问题,而不是编程问题。
如果您正在运行Apache,则可能会起作用:
chmod 755 myscript.py
ln -s myscript.py myscript.cgi
然后将其放在您的.htaccess文件中:
AddHandler cgi-script .cgi
如果由于没有外壳程序访问权限而无法运行ln
命令,则只需以.cgi扩展名开头即可。或者,如icktoofay所说,将其放在您的cgi-bin文件夹中,那么您也不需要.htaccess修改。