Установка OpenCV + php-opencv

Установка OpenCV + php-opencv

Исходные данные:
— сервер Ubuntu 20;
— панель Hestia;
— установлены две версии PHP: 7.4 и 8.0.

Требуется к обеим версиям PHP подключить модуль php-opencv.
Если на сервере другая конфигурация, например, установлена одна версия PHP, то могут измениться пути и устанавливаемые пакеты PHP, но принцип остаётся тот же самым.

Установка OpenCV из исходных текстов.

Устанавливаю необходимые пакеты:

# apt-get update
# apt-get upgrade
# apt install php8.0-dev php7.4-dev cmake

Исходники собираю в /usr/local/src/ :

# cd /usr/local/src/

Клонирую два репозитория:

# git clone https://github.com/opencv/opencv.git
# git clone https://github.com/opencv/opencv_contrib.git

Создаю каталог для сборки:
# mkdir /usr/local/src/opencv/build
# cd /usr/local/src/opencv/build

Подготовка сборки:

# cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=/usr/local/src/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..

Собственно сборка. Параметр меняю в зависимости от количества ядер CPU. В данном случае используется четыре ядра:
# make -j4

После успешной сборки — установка:
# make install

Установка модуля php-opencv из исходных текстов.

Клонирую репозиторий:

# cd /usr/local/src/
# git clone https://github.com/php-opencv/php-opencv.git

# cd /usr/local/src/php-opencv

Дальше начинаются тонкости, связанные с конкретной системой.
Для начала собираю модуль для PHP 7.4.

Переключаюсь на ветку 7.4:
# git checkout php7.4
#/usr/bin/phpize7.4
# ./configure --with-php-config=/usr/bin/php-config7.4
# make
# make install

При этом файл opencv.so падает в каталог /usr/lib/php/20190902

Подключаю расширение php-opencv к версии PHP 7.4:

# echo "extension=opencv.so" > /etc/php/7.4/mods-available/opencv.ini
# ln -s /etc/php/7.4/mods-available/opencv.ini /etc/php/7.4/cli/conf.d/20-opencv.ini
# ln -s /etc/php/7.4/mods-available/opencv.ini /etc/php/7.4/fpm/conf.d/20-opencv.ini

Аналогичные действия выполняются для PHP 8.0

# cd /usr/local/src/php-opencv
# make clean

Переключаюсь на ветку 8.0:
# git checkout php8.0
# /usr/bin/phpize8.0
# ./configure --with-php-config=/usr/bin/php-config8.0
# make
# make install

При этом файл opencv.so падает в каталог /usr/lib/php/20200930

Подключаю расширение php-opencv к версии PHP 8.0:
# echo "extension=opencv.so" > /etc/php/8.0/mods-available/opencv.ini
# ln -s /etc/php/8.0/mods-available/opencv.ini /etc/php/8.0/cli/conf.d/20-opencv.ini
# ln -s /etc/php/8.0/mods-available/opencv.ini /etc/php/8.0/fpm/conf.d/20-opencv.ini

Контрольная перезагрузка сервисов:

# systemctl restart apache2
# systemctl restart php7.4-fpm.service
# systemctl restart php8.0-fpm.service

That’s all folks!

Nicko

Добавить комментарий