2012-04-12 138 views
11

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

我跟着这个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>' 

有什么建议吗?

+0

是否已进行了文件的可执行文件?服务器中是否启用了cgi-scripts? – 2012-04-12 13:13:08

+2

后,你得到这个工作 - 检查Python的语法多行字符串使用三重引号像'“”“东西‘’”' – jsbueno 2012-04-12 13:23:21

+0

@JoachimPileborg我相信我能在服务器上的CGI的脚本,但我不知道做该文件可执行。当我查看文件(文件图标本身,而不是代码),它的上面有蟒蛇的标志,所以我不知道这意味着它的可执行文件。 – user1104854 2012-04-12 14:22:51

回答

6

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

我对Ampps并不熟悉,但获得此设置的基本Apache流程就像这样。

  1. 编辑您的选项的httpd.conf的线,其中包括ExecCGI
  2. 通过添加以下行以注册您的httpd.conf文件的Python作为CGI处理程序:
    AddHandler .py
  3. 重启Apache
  4. 确保你的shebang行(上面的#!/ usr/bin/env python位)实际上指向你的python可执行文件的路径。对于python2.6的生活在C:这可能是:
    #!\Python26\python
  5. 如果你的脚本必须是不是修改家当行的行ScriptInterpreterSource registry添加到您的httpd.conf便携,并确保窗户打开* .py文件与Python.exe默认情况下。这可以通过双击脚本来测试。如果它不执行,请右键单击它,选择open-with,然后选择其他,然后浏览到您的python.exe。确保选中“始终使用此程序打开此类文件”框。有关于此here的Microsoft知识库文章。

最后,mod_wsgi或FastCGI是让Apache执行python的首选方法,同时拥有较低的流量站点(每天有数十个请求)。我也想建议你到网页框架,如web.py(非常轻巧)或Django的(重量较重,但可以节省你,如果你正在收集用户输入或与数据库交互的时间吨)。

+0

Ampps是我看到的第一个包含python的软件包,所以我选择了它。还有其他人会推荐吗?当我使用PHP进行编程时,我使用xampp,不确定是否支持它。 – user1104854 2012-04-12 13:17:16

+0

我没有意识到“Ampps”是Apache的windows风格 - 我主要是一个Linux的家伙,我大多使用Lighttpd。请参阅编辑的答案。 – 2012-04-12 13:20:16

+1

另外,你最好使用mod-wsgi而不是cgi。我将再次编辑答案以反映这一点,并添加链接。 – 2012-04-12 13:20:42

相关问题