Используя 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