apache上的python - 得到404

时间:2010-03-29 18:56:15

标签: python apache2

我在找到解决方案之后编辑了这个问题...我需要理解为什么解决方案有效而不是我的方法?

这可能是一个愚蠢的问题。我试着搜索其他相关的问题......但无济于事。

我正在使用Suhosin-Patch mod_python / 3.3.1 Python / 2.6.2运行Apache / 2.2.11(Ubuntu)DAV / 2 SVN / 1.5.4 PHP / 5.2.6-3ubuntu4.5

我有一个名为test.py的脚本

#! /usr/bin/python
print "Content-Type: text/html"     # HTML is following
print                               # blank line, end of headers

print "hello world"

将其作为可执行文件运行...

/var/www$ ./test.py
Content-Type: text/html

hello world

当我运行http://localhost/test.py时,我收到404错误。

我缺少什么?

我使用此资源在apache上启用python解析。 http://ubuntuforums.org/showthread.php?t=91101

从同一个线程......下面的代码工作.. 为什么?     #!的/ usr / bin中/ Python的

import sys
import time

def index(req):

# Following line causes error to be sent to browser
# rather than to log file (great for debug!)

    sys.stderr = sys.stdout

    #print "Content-type: text/html\n"

    #print """
    blah1 = """<html>
    <head><title>A page from Python</title></head>
    <body>
    <h4>This page is generated by a Python script!</h4>
    The current date and time is """

    now = time.gmtime()
    displaytime = time.strftime("%A %d %B %Y, %X",now)

    #print displaytime,
    blah1 += displaytime

    #print """
    blah1 += """
    <hr>
    Well House Consultants demonstration
    </body>
    </html>
    """
    return blah1

2 个答案:

答案 0 :(得分:4)

我认为mod_python的Publisher Handler期望在test.py中找到index函数。

你可以通过将它放在URL的末尾来调用test.py中的任何函数,例如: http://localhost/test.py/any_func,如果没有给出,则默认函数为index

答案 1 :(得分:0)

如果您希望代码按原样运行,您还可以将Web服务器配置为使用.pl作为cgi脚本而不是使用mod_python.publisher

在apache config上:

AddHandler cgi-script .py

如果您不想要错误403,请编辑:

<Directory /path/to/www/yourfile.py>
Options +ExecCGI
</Directory>