Компилиция 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