Установка и конфигурация PHP модулей для серверного окружения

Раздел: Администрирование PHP -> Управление модулями PHP

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

Как установить модуль PHP через пакетный менеджер APT?

Основной и наиболее простой метод для систем на базе Debian или Ubuntu. Модули распространяются в пакетах вида php-<имя_модуля>. Перед установкой обновляется список пакетов.

sudo apt update
sudo apt install php-mbstring php-xml php-curl

Php включить модуль (включение модуля php)

После установки модуль автоматически регистрируется и становится доступным. Проверка выполняется командой:

php -m | grep mbstring

найти модуль php (поиск модуля php)

mbstring

модуль php установка модуля php (установка модуля php)

Если модуль не отображается, необходимо перезапустить веб-сервер (Apache или Nginx с PHP-FPM).

Как установить модуль PHP в CentOS или RHEL?

В системах с пакетным менеджером YUM или DNF модули поставляются с префиксом php-. Важно убедиться, что подключён репозиторий EPEL или Remi для актуальных версий.

sudo yum install epel-release
sudo yum install php-mbstring php-xml

Для DNF (Fedora, CentOS 8+):

sudo dnf install php-mbstring php-xml

После установки перезапускается веб-сервер или PHP-FPM:

sudo systemctl restart httpd  # или nginx / php-fpm

Как установить PECL расширение для PHP?

PECL (PHP Extension Community Library) содержит множество модулей, не входящих в основную поставку. Требуется предустановленный php-dev и pecl.

sudo apt install php-dev php-pear   # Debian/Ubuntu
sudo pecl install imagick redis

После установки расширение добавляется в php.ini автоматически (если нет, добавляется строка extension=imagick.so). Проверка:

php -m | grep imagick
imagick

Для установки конкретной версии используется pecl install imagick-3.7.0.

Как активировать модуль PHP без переустановки?

В Debian/Ubuntu модули можно включать и отключать с помощью phpenmod и phpdismod. Это меняет символические ссылки в директории /etc/php/*/mods-available/.

sudo phpenmod mbstring
sudo systemctl restart php8.1-fpm

Отключение:

sudo phpdismod mbstring

В CentOS/RHEL модули включаются установкой пакета, дополнительных команд не требуется – они активируются через файлы в /etc/php.d/.

Как скомпилировать модуль PHP вручную?

Если модуль отсутствует в репозиториях или требуется сборка с особыми опциями, используется исходный код. Требуется среда для сборки (phpize, php-config).

sudo apt install php-dev
wget http://pecl.php.net/get/zip-1.21.2.tgz
tar xzf zip-1.21.2.tgz
cd zip-1.21.2
phpize
./configure
make
sudo make install

После компиляции добавляется строка extension=zip.so в php.ini.

Типичная ошибка – отсутствие файла phpize или конфликт версий. Решение – установить php<версия>-dev.

Как установить модуль для конкретной версии PHP (например, 8.1)?

При наличии нескольких версий PHP модуль устанавливается с указанием версии. В Debian/Ubuntu:

sudo apt install php8.1-mbstring php8.1-xml

В CentOS с репозиторием Remi:

sudo yum install php81-php-mbstring

После установки модуль будет виден только в соответствующей версии PHP.

Типичные проблемы и их решения

Проблема: Сообщение E: Unable to locate package php-mbstring. Причина: Не подключён репозиторий или используется неверная версия PHP. Решение: Добавить PPA (например, ppa:ondrej/php) или проверить версию командой php -v.

Проблема: Модуль не загружается после установки. Причина: Отсутствует директива extension=.so в php.ini или модуль конфликтует с другим. Решение: Проверить файлы в /etc/php/*/conf.d/ и перезапустить PHP-FPM.

Проблема: Ошибка компиляции Cannot find config.m4. Причина: Неверный исходный код или отсутствие phpize. Решение: Установить php<версия>-dev и использовать корректный архив.

Проблема: Модуль установлен, но не отображается в phpinfo(). Причина: Используется другая версия PHP в CLI и веб-сервере. Решение: Установить модуль для обеих версий или проверить путь к php.ini.

Расширенные примеры установки модулей PHP

Пример 1: Установка Imagick через PECL с проверкой зависимостей

Imagick требует библиотеку ImageMagick. Сначала устанавливаются системные зависимости:

Пример
sudo apt install libmagickwand-dev libmagickcore-dev
sudo pecl install imagick

Вывод команды (сокращён):

downloading imagick-3.7.0.tgz ...
...
Build process completed successfully
Installing '/usr/lib/php/20220829/imagick.so'
install ok: channel://pecl.php.net/imagick-3.7.0

После установки добавляется строка extension=imagick.so в /etc/php/8.1/cli/conf.d/20-imagick.ini. Проверка:

Пример
php -r "echo extension_loaded('imagick') ? 'OK' : 'FAIL';"
OK

Пример 2: Установка Xdebug для профилирования

Xdebug – популярный отладчик. Установка через PECL:

Пример
sudo pecl install xdebug

После добавления в php.ini (для CLI или FPM):

Пример
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes

Результат проверки через php -v:

PHP 8.1.2-1ubuntu2.18 (cli) (built: ...)
with Xdebug v3.2.2, Copyright (c) 2002-2024, by Derick Rethans

Пример 3: Сборка модуля pgsql из исходников

Модуль pgsql может отсутствовать в репозиториях для нестандартной версии PHP. Порядок действий:

Пример
wget https://www.php.net/distributions/php-8.1.29.tar.gz
tar xzf php-8.1.29.tar.gz
cd php-8.1.29/ext/pgsql
phpize
./configure --with-pgsql=/usr/include/postgresql
make -j$(nproc)
sudo make install

После компиляции в php.ini добавляется extension=pgsql.so. Проверка:

Пример
php -m | grep pgsql
pgsql

Пример 4: Установка модуля redis через pecl с указанием версии

Некоторые проекты требуют определённую версию модуля redis:

Пример
sudo pecl install redis-6.0.2

Вывод:

downloading redis-6.0.2.tgz ...
...
Build process completed successfully
Installing '/usr/lib/php/20220829/redis.so'

Пример 5: Активация модуля opcache вручную

Opcache входит в состав PHP, но может быть отключён. Для включения требуется добавить в php.ini:

Пример
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000

Проверка через phpinfo() или командой:

Пример
php -i | grep opcache
opcache.enable => On => On
opcache.memory_consumption => 128 => 128
...

Пример 6: Установка модуля для конкретного SAPI (CLI vs FPM)

В Ubuntu модуль для FPM устанавливается отдельно:

Пример
sudo apt install php8.1-mbstring          # для CLI
sudo apt install php8.1-fpm               # если нужно, вместе с FPM

При этом модуль mbstring будет доступен в обеих средах, но можно управлять через phpenmod с указанием SAPI:

Пример
sudo phpenmod -s fpm mbstring

Установка модуля PHP - comments

En
модуль php установка модуля php (php)