PHP-скрипт не может получить вывод из Python-скрипта

У меня проблема с выполнением скрипта Python из скрипта PHP. Мой клиент использует Bluehost, поэтому я установил сторонний модуль (numpy) для Python с помощью метода easy_install, описанного здесь:https://my.bluehost.com/cgi/help/530?step=530

Чтобы продемонстрировать свою проблему, я создал два сценария Python и сценарий PHP.

hello.py содержит:

print "Hello, World!"

hello-numpy.py содержит:

import numpy
print "Hello, World!"

PHP-скрипт содержит:

Output from exec('python hello.py'): <?php echo exec('python hello.py'); ?><br>
Output from exec('python hello-numpy.py'): <?php echo exec('python hello-numpy.py'); ?><br>
Output from exec('whoami'): <?php echo exec('whoami'); ?>

Затем я получаю этот вывод из PHP:

Вывод из exec ('python hello.py'): Привет, мир!
Вывод из exec ('python hello-numpy.py'):
Вывод из exec ('whoami'): venicetw

Однако запуск этих сценариев из окна SSH дает следующие результаты:

# python hello.py
Hello, World!
# python hello-numpy.py
Hello, World!
# whoami
venicetw

Кажется, что PHP не получает никакого вывода, когда скрипт Python импортирует numpy, но он отлично работает из SSH. Кроме того, PHP получает статус возврата 0 для hello.py и 1 для hello-numpy.py. Я думал, что это может быть проблема с разрешениями, но PHP и SSH работают как пользователь «venicetw». Что помешает PHP и Apache получить выходные данные из скрипта Python? Это то, что я могу обсудить с Bluehost, или что-то еще, что я должен проверить? Мы используемApache 2.2.21, PHP 5.2.17, Python 2.4.3, а такжеnumpy 1.6.0.

Обновить: SSH печатает следующие пути Python:

/home8/venicetw/public_html/venicenoise/python
/home8/venicetw/.local/lib/python2.4/site-packages/ogcserver-0.1.0-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/PIL-1.1.7-py2.4-linux-x86_64.egg
/home8/venicetw/.local/lib/python2.4/site-packages/lxml-2.3.2-py2.4-linux-x86_64.egg
/home8/venicetw/.local/lib/python2.4/site-packages/WebOb-1.2b2-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/PasteScript-1.7.5-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/PasteDeploy-1.5.0-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/Paste-1.7.5.1-py2.4.egg
/home8/venicetw/.local/lib/python2.4/site-packages/numpy-1.6.0-py2.4-linux-x86_64.egg
/home8/venicetw/.local/lib/python2.4/site-packages
/home8/venicetw/.local/lib/python/site-packages
/home8/venicetw/public_html/venicenoise/python
/usr/lib64/python24.zip
/usr/lib64/python2.4
/usr/lib64/python2.4/plat-linux2
/usr/lib64/python2.4/lib-tk
/usr/lib64/python2.4/lib-dynload
/usr/lib64/python2.4/site-packages
/usr/lib64/python2.4/site-packages/Numeric
/usr/lib64/python2.4/site-packages/PIL
/usr/lib64/python2.4/site-packages/gtk-2.0
/usr/lib/python2.4/site-packages

Но Apache печатает только эти пути Python:

/home8/venicetw/public_html/venicenoise/python
/usr/lib64/python24.zip
/usr/lib64/python2.4
/usr/lib64/python2.4/plat-linux2
/usr/lib64/python2.4/lib-tk
/usr/lib64/python2.4/lib-dynload
/usr/lib64/python2.4/site-packages
/usr/lib64/python2.4/site-packages/Numeric
/usr/lib64/python2.4/site-packages/PIL
/usr/lib64/python2.4/site-packages/gtk-2.0
/usr/lib/python2.4/site-packages

Решение: Выполнив / usr / bin / env из PHP и SSH, я смог определить, что в PHP отсутствует переменная среды для пути Python, где установлена numpy. В этом случае, добавив

putenv('PYTHONPATH=/home8/venicetw/.local/lib/python2.4/site-packages:/home8/venicetw/.local/lib/python/site-packages:');

к началу PHP-скрипта все работает как положено.

Ответы на вопрос(1)

Ваш ответ на вопрос