Я получаю досадную ошибку без видимой причины.
Вот настройка: у меня есть скрипт на python (дистрибутив Python 3.6 anaconda), который вызывается из Php (7.2.6) и все в CentOS7.
Вызов PHP к Python осуществляется через exec и выглядит следующим образом
exec("LANG='en_US.UTF8' " . "/opt/anaconda3/bin/python". " /home/my_web_user_name/public_html/my_python_script.py " . $parameters);
Все работает как чудо, если я вызываю файл PhP (сexec в нем) из терминала, просто как
php the_phpFile.php
Однако, когда тот же файл вызывается из браузера (пользователь веб-сайта), я получаю следующую ошибку (краткая версия)
"/opt/anaconda3/lib/python3.6/ctypes/__init__.py",
line 273, in _reset_cache CFUNCTYPE(c_int)(lambda: None) MemoryError
и это полная история вызовов до возникновения ошибки.
Traceback (most recent call last): File
"/home/my_web_user_name/public_html/my_python_script.py", line 8, in from
nltk.stem import PorterStemmer File "/opt/anaconda3/lib/python3.6/site-
packages/nltk/__init__.py",
line 114, in from nltk.collocations import * File
"/opt/anaconda3/lib/python3.6/site-packages/nltk/collocations.py",
line 39, in from nltk.metrics import ContingencyMeasures,
BigramAssocMeasures, TrigramAssocMeasures File
"/opt/anaconda3/lib/python3.6/site-packages/nltk/metrics/__init__.py",
line 16, in from nltk.metrics.scores import (accuracy, precision, recall,
f_measure, File "/opt/anaconda3/lib/python3.6/site-
packages/nltk/metrics/scores.py", line 18, in from scipy.stats.stats import
betai File "/opt/anaconda3/lib/python3.6/site-packages/scipy/__init__.py",
line 61, in from numpy import show_config as show_numpy_config File
"/opt/anaconda3/lib/python3.6/site-packages/numpy/__init__.py",
line 142, in from . import add_newdocs File
"/opt/anaconda3/lib/python3.6/site-packages/numpy/add_newdocs.py",
line 13, in from numpy.lib import add_newdoc File
"/opt/anaconda3/lib/python3.6/site-packages/numpy/lib/__init__.py",
line 8, in from .type_check import * File
"/opt/anaconda3/lib/python3.6/site-packages/numpy/lib/type_check.py",
line 11, in import numpy.core.numeric as _nx File
"/opt/anaconda3/lib/python3.6/site-packages/numpy/core/__init__.py",
line 35, in from . import _internal # for freeze programs File
"/opt/anaconda3/lib/python3.6/site-packages/numpy/core/_internal.py",
line 15, in import ctypes File
"/opt/anaconda3/lib/python3.6/ctypes/__init__.py",
line 538, in _reset_cache() File
"/opt/anaconda3/lib/python3.6/ctypes/__init__.py",
line 273, in _reset_cache CFUNCTYPE(c_int)(lambda: None) MemoryError
Кажется очевидным, что ошибка возникает в результате вызова модуля nltk и действительно, если я его выключу, ошибка исчезнет.С другой стороны, все работает нормально при вызове из терминала.Так что я думаю, что это связано с некоторыми разрешениями.
В любом случае, я понятия не имею, почему это происходит.
Любые идеи по этому поводу будут высоко оценены.