Способы установки и применения модулей PHP

Раздел: Администрирование PHP -> Расширения 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
redis
PECL автоматически компилирует и размещает .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 показывает все загруженные модули. Отсутствие ожидаемого модуля указывает на проблему установки или активации.

Установка и использование модулей PHP - comments

En
Php modules (php)