使用 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 安装)解决了这个问题。