Не могу выполнить скрипт Python, который импортирует cv2.so из переполнения стека

я пытаюсь запустить скрипт Python для обработки изображений из PHP

скрипт php

<?php
echo exec('echo $PATH ');
putenv("PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin");
echo "<br>";
echo exec('echo $PATH');
echo "<br>";
echo exec('whoami');
echo "<br>";
echo exec('/usr/bin/python /var/www/html/wordspot/uploads/editimage1.py /var/www/html/wordspot/uploads/test.jpg 2>&1'); ?>

скрипт на питоне

import sys,getopt
import numpy as np
import cv2

imname=str(sys.argv[1])
print imname
img=cv2.imread(imname,0)
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
cv2.imwrite(imname,thresh1)

в то время как на терминале при выполнении «php test.php» он работает (я запускаю его как root)

в браузере я получаю этот вывод

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin
apache
ImportError: libopencv_core.so.3.0: cannot open shared object file: No such file or directory

я думаю, что импорт cv2.so вызывает эту ошибку (он работает, например, на примере Hello World Python)
Что я могу сделать, чтобы сделать библиотеки opencv видимыми от пользователя apache?

редактировать
Решение: добавление пути к библиотеке в /etc/ld.so.conf.d/opencv.conf а также executing ldconfig -v
изменил ошибку на "ImportError: libopencv_core.so.3.0: cannot enable executable stack as shared object requires: Permission denied"

После отключения SELinux с помощью setenforce 0 это сработало. (Это не переживет перезагрузку, SELinux нужно отключить в /etc/selinux/config и изменить на SELINUX=disabledили предоставляя правильные разрешения в SELinux, чтобы разрешить доступ к библиотеке.)

1

Решение

Где libopencv_core.so.3.0 расположен? Если это в /usr/local/lib, попробуйте установить LD_LIBRARY_PATH вот так перед выполнением программы:

putenv("LD_LIBRARY_PATH=/usr/local/lib");
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector