apache2 - mod_python 与 apache2,(重新)导入模块错误

标签 apache2 mod-python cgi-bin

我正在尝试让 mod-python 与 apache2 一起使用,但没有成功。我已经遵循了一些让 mod-python 工作的教程,但我看不出我做错了什么。

当我访问http://site.example.com/cgi-bin/test.py时我真的得到了我的 404 页面! (如果文件确实不存在,我会收到 403 禁止)

这是我的设置:

在/etc/apache2/sites-enabled/中有以我的每个域命名的配置文件。在 the site.example.com file我已将其添加到用户指令部分:

# Begin user directives <--
<Directory /home/default/site.example.com/user/htdocs/cgi-bin/>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride AuthConfig
     Order allow,deny
     allow from all
     AddHandler mod_python .py
     PythonHandler mod_python.publisher
     PythonDebug On
</Directory>
# --> End user directives

完整文件here ,其中包括行:

编辑以添加 test.py 的内容:

#!/usr/bin/python  
print "Content-type: text/html"  
print  
print 'hello world'  
#print 1/0

如上所示,我收到404/python/test.py was not found on this server

但是如果我取消注释最后一行,我会得到:

Mod_python error: "PythonHandler mod_python.publisher"

Traceback (most recent call last):

  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch
    result = object(req)

  File "/usr/lib/python2.4/site-packages/mod_python/publisher.py", line 98, in handler
    path=[path])

  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 457, in import_module
    module = imp.load_module(mname, f, p, d)

  File "/home/default/site.example.co.uk/user/htdocs/python/test.py", line 5, in ?
    print 1/0

ZeroDivisionError: integer division or modulo by zero

这个回溯看起来正确吗?顺便说一句,启用 cgitb 没有任何效果。

我可以添加任何其他信息来帮助诊断此问题吗?

最佳答案

据我所知,Publisher 处理程序需要接受请求对象和方法才能返回响应。

在我的脚本中,我有这样的内容:

#!/usr/bin/python  
def run(req):
  return 'Hello world!'

然后,转到http://.../python/test.py/run

在本例中,req 是发布者处理程序传入的请求对象。

而且,如果您还没有,则需要在 test.py 所在的同一目录中拥有一个 __init__.py 文件。

此外,对于发布者,我注意到有时响应会被缓存。我将在浏览器中看到我已经修复的相同错误。因此,如果您看到一个您认为已经修复的错误,重新启动 apache 并不是一个坏主意。

关于apache2 - mod_python 与 apache2,(重新)导入模块错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705992/

相关文章:

c++ - 基本 CGI 协议(protocol)的格式。例子

apache - mod_ajp_proxy 配置和 session 粘性

linux - 使用 cgi-perl 脚本的无密码 SSH

c - 使用 ap_parse_form_data 从 C 中的 apache 模块检索 POST 数据时出错

python - 在 Windows 上使用 Python 2.6 的 mod_python

python - 如何在 Mod_Python 中通过 POST 或 GET 发送数据?

python - 在与 mod_python 一起运行的脚本中使用 pam_python

svn - tortoisesvn - 错误报告请求在 ../../../!svn/vcc/default 上失败

python - CGI 不执行 python - 500 内部服务器错误

python - 为什么我的标准输出会干扰我的 python 网页?