.py python文件显示代码,而不是在webhost上执行

时间:2018-07-31 19:06:11

标签: python html cgi

我正在尝试获取一个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代码。

2 个答案:

答案 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脚本的默认处理程序。

相关问题