Назад | Перейти на главную страницу

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, я вижу следующую строку:

[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. Может ли это быть возможной причиной?

Заранее спасибо.

В моем скрипте Python / usr / bin / env использовался для вызова Python. Это вызывало неправильную версию. Не знаю, как заставить его вызывать другую версию, но изменение моих скриптов на / usr / bin / local / python (установка Python 2.5.5) устранило проблему.

Скорее всего, процесс apache работает от имени другого пользователя и может выбрать другой системный путь к вашему собственному пользователю.

Возможно, если ваш пользователь apache является www-data, выполнение следующей команды подтвердит это:

sudo su www-data python -V