Способы установки и применения модулей PHP
Обзор установки модулей PHP
Модули PHP (расширения) добавляют дополнительную функциональность языку. Их установка может выполняться разными способами в зависимости от окружения.
Установка через системный пакетный менеджер
Как наиболее просто установить модуль PHP в Linux?
Для дистрибутивов на основе Debian/Ubuntu используется apt, для CentOS/RHEL - yum или dnf. Модули обычно называются по шаблону php-<имя_модуля>.
sudo apt update
sudo apt install php-mbstringПосле установки модуль автоматически активируется, если он совместим с версией PHP. Для проверки:
php -m | grep mbstringТипичная ошибка: пакет не найден. Решение - обновить список пакетов (sudo apt update) или добавить сторонний репозиторий (например, ppa:ondrej/php).
Проблема: версия модуля не соответствует установленной версии PHP. Используйте пакет с указанием версии, например php8.1-mbstring.
Цель: быстрая установка в стандартных окружениях, поддержка через менеджер пакетов.
Как установить модуль PHP без доступа к репозиториям?
Компиляция из исходных кодов (сборка как shared extension). Требуется наличие PHP SDK (phpize) и исходников модуля.
# Установка phpize (для Ubuntu)
sudo apt install php-dev
# Скачивание исходников модуля (например, xdebug)
wget https://xdebug.org/files/xdebug-3.2.0.tgz
tar -xzf xdebug-3.2.0.tgz
cd xdebug-3.2.0
phpize
./configure --enable-xdebug
make
sudo make installЗатем в php.ini добавить строку: zend_extension=xdebug.so
Частая ошибка: phpize не найден - установите пакет php-dev (Debian) или php-devel (RHEL).
Проблема: конфликт версий - исходники должны соответствовать версии PHP.
Цель: установка модулей, недоступных в репозиториях, или кастомизация параметров сборки.
Как установить модуль через PECL?
PECL (PHP Extension Community Library) предоставляет репозиторий расширений. Требуется установленный pecl (входит в пакет php-pear).
sudo apt install php-pear php-dev
sudo pecl install redisПосле установки модуль необходимо активировать в php.ini (обычно PECL добавляет строку автоматически, но может потребоваться ручная проверка).
Ошибка: "pecl: command not found" - установите php-pear.
Проблема: модуль требует определённые версии библиотек (например, libssl-dev для redis). Предварительно установите зависимости.
Цель: доступ к большому каталогу расширений для PHP, простая установка из командной строки.
Как включить или отключить уже установленный модуль?
В системах Debian/Ubuntu используется команда phpenmod и phpdismod. Для дистрибутивов на основе RHEL - редактирование файлов в /etc/php.d/.
# Включить модуль mbstring
sudo phpenmod mbstring
# Отключить модуль
sudo phpdismod mbstring
# После изменений перезапустить веб-сервер
sudo systemctl restart apache2Можно также вручную редактировать php.ini, раскомментировав или добавив строку extension=mbstring.so.
Ошибка: "phpenmod: command not found" - пакет php-common не установлен.
Цель: управление загруженными модулями без переустановки.
Дополнительно можно проверить все установленные модули командой php -m.
Примеры установки и использования
Ниже приведены подробные примеры для каждого способа с командами и ожидаемым результатом.
1. Установка модуля mbstring через apt (Debian/Ubuntu)
$ sudo apt update
$ sudo apt install php-mbstring -y
$ php -m | grep mbstring
mbstringРезультат: команда grep выводит строку 'mbstring', подтверждая успешную установку и активацию модуля.
2. Компиляция модуля xdebug из исходных кодов
# Установка зависимостей
$ sudo apt install php-dev build-essential wget
# Скачивание и распаковка
$ wget https://xdebug.org/files/xdebug-3.2.2.tgz
$ tar -xzf xdebug-3.2.2.tgz
$ cd xdebug-3.2.2
# Подготовка и сборка
$ phpize
$ ./configure --enable-xdebug
$ make -j$(nproc)
$ sudo make install
# Добавление в php.ini
$ echo "zend_extension=xdebug.so" | sudo tee -a /etc/php/8.1/cli/php.ini
$ php -m | grep xdebug
xdebugПосле сборки и активации модуль xdebug отображается в списке. Обратите внимание, что версия phpize должна соответствовать установленной версии PHP.
3. Установка модуля redis через PECL
$ sudo apt install php-pear php-dev
$ sudo pecl install redis
$ echo "extension=redis.so" | sudo tee /etc/php/8.1/cli/conf.d/20-redis.ini
$ php -m | grep redis
redisPECL автоматически компилирует и размещает .so файл. Если модуль не загрузился, проверьте права на файл конфигурации и перезапустите веб-сервер.
4. Включение и отключение модуля с помощью phpenmod/phpdismod
$ sudo phpenmod mbstring
$ php -m | grep mbstring
mbstring
$ sudo phpdismod mbstring
$ php -m | grep mbstring
# (пусто, модуль отключён)
$ sudo phpenmod mbstringКоманды phpenmod и phpdismod добавляют/удаляют символические ссылки в директории /etc/php/*/cli/conf.d/. После изменения модуль становится активным или неактивным для всех SAPI.
5. Полный список установленных модулей
$ php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
...
mbstring
...
[Zend Modules]
XdebugВывод команды php -m показывает все загруженные модули. Отсутствие ожидаемого модуля указывает на проблему установки или активации.