14

我正在尝试开始使用 Python,但无法为 localhost(使用 Ampps)正确设置服务器。Python 通过 IDLE 和命令行运行得很好,但是,当我在浏览器中打开文件时,代码显示并且不运行。

我按照这个http://www.imladris.com/Scripts/PythonForWindows.html教程来设置 cgi,但它不起作用。

这是我的“hello world”程序的代码,如果这有什么不同的话。

#!/usr/bin/env python
# -*#!/usr/bin/python

print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'

有什么建议么?

4

2 回答 2

6

您的 Web 服务器将您的 python 代码视为静态文件而不是可执行文件。这里的目标是您希望 Apache 执行 python 并将标准输出发送回用户的浏览器。

我对 Ampps 不熟悉,但获取此设置的基本 Apache 流程是这样的。

  1. 编辑 httpd.conf 的 Options 行以包含 ExecCGI
  2. 通过添加以下行,将您的 python 文件与 httpd.conf 注册为 cgi 处理程序:
    AddHandler .py
  3. 重启阿帕奇
  4. 确保您的 shebang 行(顶部的 #!/usr/bin/env python 位)实际上指向您的 python 可执行文件的路径。 对于生活在 C: 上的 python2.6,这可能是:
    #!\Python26\python
  5. 如果您的脚本必须是可移植的,请不要修改 shebang 行,而是将该行添加ScriptInterpreterSource registry到您的 httpd.conf,并确保 windows 默认使用 Python.exe 打开 *.py 文件。这可以通过双击脚本来测试。如果它没有执行,请右键单击它,选择打开方式,然后选择其他,然后浏览到您的 python.exe。确保选中“始终使用此程序打开此类文件”框。这里有一篇关于此的 Microsoft 知识库文章。

最后,mod_wsgi 或 FastCGI 是让 Apache 执行 python 的首选方法,优先选择较低流量的站点(每天有 10 的数千个请求)。我还建议研究 web 框架,例如 web.py(非常轻量级)或 django(较重,但如果您正在收集用户输入或与数据库交互,可以节省大量时间)。

于 2012-04-12T13:13:39.370 回答
2

给定的解决方案在树莓派 3 B+ 上对我有用:

1)尝试编辑:sudo nano /etc/apache2/sites-enabled/000-default.conf

2)在此文件中添加以下代码:

    <Directory /var/www/html>
            Options +ExecCGI
            AddHandler cgi-script .py
            # DirectoryIndex index.py
    </Directory>

3)重启apache2:sudo service apache2 restart

4)在您的代码中只需添加上面的几行:

#!/usr/bin/env python3
import cgitb
cgitb.enable()
print("Content-Type:text/html;charset=utf-8")
print()
print("Hello world")

5)您的代码应该可以工作;)

于 2020-02-23T18:25:07.453 回答