【发布时间】:2009-10-02 08:51:43
【问题描述】:
刚刚使用 Python 2.4.3 在 CentOS 5 (Apache 2.2.3) 服务器上安装并配置了 mod_python 3.2.8。 Apache 可以很好地加载它。
我激活了 mpinfo 测试页面,它可以工作。于是我用下面的代码写了一个简单的“Hello World”:
from mod_python import apache
def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!")
req.flush()
return apache.OK
它输出一个空白页,没有文本也没有来源。如果我有意识地创建了一个语法错误,我会在 URL 上得到错误输出,例如(当我在“def”之前放置一个空格时):
Mod_python error: "PythonHandler mod_python.cgihandler"
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/cgihandler.py", line 96, in handler
imp.load_module(module_name, fd, path, desc)
File "/var/www/vhosts/localhost/httpdocs/mptest.py", line 3
def handler(req):
^
SyntaxError: invalid syntax
我花了大约五个小时浏览不同的教程、常见问题解答和故障排除指南,但找不到关于此问题的描述。
您认为可能是什么问题/原因?
编辑:这是该站点的 Apache 配置...
<Directory />
Options FollowSymLinks
AllowOverride None
AddHandler mod_python .py
PythonHandler mptest
PythonDebug On
</Directory>
编辑 2: 啊,我忘了提到的另一件事是我打算使用 mod_python 来编写 Apache 扩展。应用程序本身是用 PHP 编写的,但我需要在服务器上进行一些安全处理 :)
【问题讨论】:
-
澄清一下,问题不是错误消息,而是没有产生输出。
-
尝试修改 Apache
配置部分以指向源目录 -
看看 Apache 错误日志可能会有所帮助...
-
在没有语法错误的情况下,错误日志根本不包含任何内容。更改
配置没有任何区别。 -
你在谈论什么样的安全调整。其他人向您指出的 mod_wsgi 模块具有定义身份验证提供程序、授权控制和一般访问控制的能力。它实现它们的方式比 mod_python 更容易使用。请参阅“code.google.com/p/modwsgi/wiki/AccessControlMechanisms”。顺便说一句,你为什么要使用过时且有缺陷的 mod_python 版本。那个版本很古老。最新的是 3.3.1,即使它已经很老了,因为不再有效地维护,它仍然存在各种错误。
标签: python apache mod-python