php
October 22, 2024

Компилиция PHP-модуля с помощью phpize

Столкнулся недавно с отсутствием PHP-модуля pcntl в стандартных репозиториях Debian. Данный модуль понадобился мне для работы с help-desk системой FreeScout.

При проверке системы в панели управления CMS отображалось уведомление о том, что модуль pcntl не был обнаружен:

Скачиваем по ссылке https://www.php.net/releases/ нужную версию PHP:

wget https://www.php.net/distributions/php-8.2.7.tar.gz

Распаковываем архив и переходим в каталог ext/ с нужным модулем:

tar -xvf php-*.tar.gz
cd php-*/ext/pcntl

Скомпилируем наш модуль выполнив команды:

phpize
./configure
make

В результате выполнения модуль будет сохранен в modules/pcntl.so.

Теперь необходимо скопировать его в рабочий каталог динамически загружаемых модулей PHP.

Узнать текущий рабочий каталог для размещения модулей можно при помощи команды в терминале:

php-config --extension-dir

Быстро скопировать скомпилированный модуль можно с помощью команды:

cp modules/pcntl.so $(php-config --extension-dir)

Создадим файл с настройками для включения модуля:

cat << EOF > /etc/php/*/mods-available/pcntl.ini
; configuration for php common module
; priority=10
extension=pcntl.so
EOF

Активируем модуль командой:

phpenmod pcntl

Для применения параметров потребуется перезапустить веб-сервер или PHP-FPM, если он используется:

systemctl reload apache2
systemctl reload php*-fpm.service