У меня есть скрипт на python, который называется командой php’s shell_exec. Все работает хорошо, за исключением того, что он не может импортировать корпуса NLTK при вызове через shell_exec. Однако та же самая команда выполняется без проблем всякий раз, когда я вызываю ее непосредственно из оболочки. Я использую Debian 8.
Это мой php-код:
$cmd = "/usr/bin/python /var/www/include/sCrape.py -u '$my_url' ";
$response = shell_exec($cmd);
$response = json_decode($response, true);
Эта команда хорошо работает, когда вызывается напрямую (без sudo) из корня:
/usr/bin/python /var/www/include/sCrape.py -u '$my_url'
Сообщение об ошибке из скрипта python, который я получаю (только когда я вызываю из shell_exec PHP):
Traceback (most recent call last):
File "/var/www/include/sCrape.py",
line 221, in main() File "/var/www/include/sCrape.py",
line 211, in main sc = sCrapeClass()
File "/var/www/include/sCrape.py",
line 61, in __init__ self._stopwords = set(stopwords.words('english') + list(punctuation))
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/util.py",
line 99, in __getattr__ self.__load()
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/util.py",
line 64, in __load except LookupError:
raise e LookupError: ********************************************************************** Resource u'corpora/stopwords' not found.
Please use the NLTK Downloader to obtain the resource:
>>> nltk.download() Searched in: - '/var/www/nltk_data' -
'usr/share/nltk_data' - '/usr/local/share/nltk_data' -
'/usr/lib/nltk_data' - '/usr/local/lib/nltk_data' **********************************************************************
Задача ещё не решена.
Других решений пока нет …