我正在尝试获取一个HTML页面以接受文本输入,并让它获取python脚本并将其打印出来。在试用Webhost时,我可以正常工作,升级到完整帐户后,我将文件转移过来,并且它停止工作。我可能错过了设置步骤,但是我不知道在哪里。这是我所做的:
我设置了python virtualenv,然后通过进入SSH并输入source /home/username/virtualenv/test/3.5/bin/activate
并确认它已被激活来激活它。
然后,我尝试运行位于public_html文件夹中的index.html文件:
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
<form action="/cgi-bin/hello.py" method="get">
Enter Message: <input type="text" name="message">
<input type="submit" value="submit">
</form>
</body>
</html>
一切显示正确。当我在输入框中输入任何内容并单击提交时,它应该执行我的cgi-bin文件夹中的hello.py脚本:
#!/home/username/virtualenv/test/3.5/bin/python
import cgi
data = cgi.FieldStorage()
print ("Content-Type: text/html\n")
print (data["message"].value)
显示的只是实际的python代码,而不是html的输入。
我也在python脚本中使用#!/ usr / bin / python尝试了它,它仍然只显示python代码。
答案 0 :(得分:0)
通过在cgi-bin文件夹中创建具有以下规则的.htaccess文件来解决此问题:
Options +ExecCGI
AddHandler cgi-script .py
答案 1 :(得分:0)
我正在添加此内容,希望对您将来迁移到其他主机或任何类似情况证明有所帮助。您需要知道后台发生了什么。
此外,考虑对勾号打勾(直到变成绿色),以便人们知道此问题已得到回答。 https://stackoverflow.com/help/accepted-answer
基本上,Apache需要知道.py文件将作为CGI脚本执行。在具有root用户访问权限的完整VPS帐户上,您将需要编辑apache配置文件(httpd.conf)或像上面一样添加.htaccess文件。
在没有root用户访问权限的共享主机上(我假设您正在使用),只有第二个选项可以工作(确实如此)。
另外,请考虑将.cgi用作脚本而不是.py(Python会起作用),因为这是apache上cgi脚本的默认处理程序。