Apache 使用了错误的 Python 版本,2.4 脚本可以运行,2.5 脚本失败

Apache 使用了错误的 Python 版本,2.4 脚本可以运行,2.5 脚本失败

使用 CentOS5,我已使用以下指令配置了 Apache。

Alias /pscript/ /var/www/pscript/
<Directory "/var/www/pscript/">
    Options +ExecCGI
    DirectoryIndex thetest.py
    AddHandler cgi-script .py
</Directory>

当我调用 www.domain.com/pscript/ 时,我的 python 脚本运行并打印出我的sys.path,即显示python2.4

当我调用需要 Python 2.5 的另一个脚本时,出现 500 内部服务器错误。

查看我的 Apache error_log,我看到以下行:

[Wed Mar 03 16:58:44 2010] [error] [client 000.000.000.000] Please use Python 2.5 or greater

从命令行运行python -V将返回Python 2.5.5。我安装了 2.4 和 2.5.5,但只应使用 2.5.5。

为了解决 Apache 问题,我重新编译了 Python 2.5.5 以确保安全,并确保启用了共享库。然后,我重新编译了 mod_python 以防影响某些东西,但我的sys.path仍然如此python2.4

我想知道,我是否需要重新编译 Apache 2.2.3 本身?我只需要 Apache 使用 Python 2.5.5。

编辑:看来我的两个 Python 安装都有共享库。显然 2.4 版本早于 2.5。这可能是原因吗?

提前致谢。

答案1

apache 进程很可能以不同的用户身份运行,并且可能会选择与您自己的用户不同的系统路径。

也许,假设您的 apache 用户是 www-data,运行以下命令将确认这一点:

sudo su www-data python -V

答案2

在我的 Python 脚本中,/usr/bin/env 被用来调用 Python。这调用了错误的版本。不确定如何让它调用不同的版本,但将我的脚本更改为 /usr/bin/local/python(Python 2.5.5 安装)解决了这个问题。

相关内容