【问题标题】:.py python file displaying code instead of executing on webhost.py python 文件显示代码而不是在 webhost 上执行
【发布时间】:2018-07-31 19:06:11
【问题描述】:

我正在尝试获取一个 html 页面来获取文本输入并让 python 脚本获取它并打印出来。在我为虚拟主机试用期间,我的这个工作正常,在我升级到完整帐户后,我将文件转移过来,它停止工作。我可能错过了设置中的一步,但我不知道在哪里。这是我所做的:

我设置了一个 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 代码。

【问题讨论】:

  • 你告诉服务器它应该执行 .py 文件了吗?
  • 我已经提供了正确的 755 权限,但仍然无法让它执行 .py 文件,而不仅仅是显示代码。

标签: python html cgi


【解决方案1】:

已通过在 cgi-bin 文件夹中创建具有以下规则的 .htaccess 文件来修复:

Options +ExecCGI AddHandler cgi-script .py

【讨论】:

    【解决方案2】:

    我添加了这个,希望它对您将来迁移到其他主机或任何类似情况有所帮助。你需要知道在后台发生了什么。

    此外,请考虑勾选标记(直到它变为绿色),以便人们知道此问题已得到解答。 https://stackoverflow.com/help/accepted-answer


    基本上,Apache 需要知道 .py 文件将作为 CGI 脚本执行。在具有 root 访问权限的完整 VPS 帐户上,您将需要编辑 apache 配置文件 (httpd.conf) 或像上面那样添加一个 .htaccess 文件。

    在共享主机(我假设您正在使用)上,您没有 root 访问权限,只有第二个选项可以工作(就像它所做的那样)。

    另外,请考虑在脚本中使用 .cgi 而不是 .py(Python 也一样),因为这是 apache 上 cgi-scripts 的默认处理程序。

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2011-06-09
      • 2020-09-20
      • 1970-01-01
      相关资源
      最近更新 更多