MemoryError в вызове python из php

Я получаю досадную ошибку без видимой причины.

Вот настройка: у меня есть скрипт python (дистрибутив Python 3.6 anaconda), который вызывается из Php (7.2.6) на CentOS 7.

Вызов 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, и действительно, если я его выключу, ошибка исчезает. С другой стороны, при вызове с терминала все работает нормально. Я думаю, это связано с некоторыми разрешениями.

В любом случае я понятия не имею, почему это происходит.

Любые идеи по этому поводу были бы очень признательны.

Вы случайно не решили это? Любопытно узнать

sai 26.04.2020 15:29

@sai, к сожалению нет. В итоге я реализовал обходной путь, чтобы не использовать nltk напрямую.

Hayk 26.04.2020 15:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
284
1

Ответы 1

Похоже, решение - отключить SeLinux и перезагрузить компьютер. Потому что даже при установке правильных свойств с помощью "semanage" это не сработает.

спасибо за ответ, но об отключении SeLinux для нас не может быть и речи (это может привести к уязвимости всей системы).

Hayk 25.05.2019 09:04

Другие вопросы по теме