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

Раздел: Администрирование PHP -> Настройка PHP-окружения

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

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

Наиболее эффективным решением является использование менеджера пакетов apt. Этот способ гарантирует совместимость версий и автоматическое разрешение зависимостей. Для установки, например, модулей mbstring, xml и curl следует выполнить:

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

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

После завершения установки модули становятся доступными в PHP. Для проверки можно использовать команду php -m | grep -E 'mbstring|xml|curl'.

Возможные проблемы: Пакет может называться с указанием версии PHP (например, php7.4-mbstring). Если модуль не найден, возможно, требуется добавить репозиторий PPA или установить соответствующую версию PHP. Также после установки необходимо перезапустить веб-сервер (например, sudo systemctl restart apache2).

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

PECL (PHP Extension Community Library) предназначен для расширений, которые не входят в стандартный набор. Для использования требуется установленный php-pear. Пример установки расширения redis:

sudo pecl install redis

По завершении необходимо добавить строку extension=redis.so в файл php.ini. Местоположение файла можно узнать через php --ini.

Типичные ошибки: Отсутствие phpize или заголовочных файлов PHP. Решение - установить пакет php-dev (sudo apt install php-dev). Также может потребоваться установка зависимостей библиотеки (например, для imagick - libmagickwand-dev).

Возможна ли установка модуля из исходного кода с использованием phpize?

Этот способ применяется, когда модуль не доступен через менеджер пакетов или PECL, либо требуется кастомизация. Пример для модуля mysqli (хотя он часто встроен):

cd /path/to/php-src/ext/mysqli
phpize
./configure --with-php-config=/usr/bin/php-config
make
sudo make install

После сборки необходимо добавить extension=mysqli.so в php.ini.

Проблемы: Необходимы инструменты компиляции (build-essential), исходные коды PHP (можно взять из php-src). Версия модуля должна строго соответствовать версии PHP. Ошибки линковки часто связаны с отсутствием зависимостей.

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

На Windows модули распространяются в виде DLL-файлов. Достаточно скачать соответствующие файлы с сайта PECL для Windows или использовать официальный дистрибутив PHP. После размещения DLL в папке ext необходимо отредактировать файл php.ini:

extension=php_curl.dll

Далее следует перезапустить веб-сервер (Apache, IIS) или проверить через командную строку: php -m.

Распространённые затруднения: Несоответствие архитектуры (x86 против x64), отсутствие VC++ redistributable. Нужно убедиться, что версия DLL совпадает с версией PHP (Thread safe/Non thread safe).

Как включить модуль PHP в контейнере Docker?

При использовании официального образа PHP установка модулей производится через встроенную команду docker-php-ext-install. Пример для модулей pdo_mysql и mysqli:

FROM php:8.1-cli
RUN docker-php-ext-install pdo_mysql mysqli

Также можно использовать pecl внутри контейнера. Результат проверяется командой php -m после сборки.

Возможные сложности: Некоторые расширения требуют дополнительных системных библиотек (например, libpng-dev, libjpeg-dev). Их следует установить перед вызовом docker-php-ext-install с помощью apt-get install.

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

Установка модуля imagick через PECL с подготовкой зависимостей

Перед установкой расширения ImageMagick необходимо установить библиотеку libmagickwand-dev:

Пример
sudo apt install libmagickwand-dev
sudo pecl install imagick
…
Build process completed successfully
Installing '/usr/lib/php/20210902/imagick.so'
install ok: channel://pecl.php.net/imagick-3.7.0

После этого в php.ini добавляется extension=imagick.so. Проверка: php -m | grep imagick должен показать imagick.

Установка Xdebug с настройкой для отладки

Модуль Xdebug удобно ставить через PECL:

Пример
sudo pecl install xdebug
…
Installing '/usr/lib/php/20210902/xdebug.so'

Далее в php.ini (или отдельном файле /etc/php/8.1/cli/conf.d/20-xdebug.ini) прописываются параметры:

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

Перезапуск не требуется для CLI, но для веб-сервера необходим reload.

Установка модуля для конкретной версии PHP при наличии нескольких версий

На системе может быть установлено несколько версий PHP (например, 7.4 и 8.1). Для установки модуля mbstring для PHP 7.4 используется пакет с суффиксом версии:

Пример
sudo apt install php7.4-mbstring
…
Unpacking php7.4-mbstring (7.4.33-1+ubuntu22.04.1) …

Аналогично для других модулей. Управление активной версией может выполняться через update-alternatives или модули Apache (a2enmod php7.4).

Компиляция модуля из исходников с изменением опций сборки

Пример для модуля opcache (хотя он обычно встроен, но можно пересобрать):

Пример
cd /usr/local/src
php -r "copy('https://www.php.net/distributions/php-8.1.22.tar.gz', 'php-8.1.22.tar.gz');"
tar xzf php-8.1.22.tar.gz
cd php-8.1.22/ext/opcache
phpize
./configure --with-php-config=/usr/bin/php-config
make -j$(nproc)
sudo make install
…
Installing shared extensions: /usr/lib/php/20210902/

После этого подключается через php.ini.

Установка модулей в Docker-образе с установкой системных зависимостей

Пример
FROM php:8.2-apache
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd pdo_mysql

Сборка образа и проверка:

Пример
docker build -t my-php-app .
docker run my-php-app php -m | grep -E 'gd|pdo_mysql'
gd
pdo_mysql

Установка модуля на CentOS/RHEL через dnf

Менеджер пакетов dnf также позволяет установить модули с суффиксом php, но требуется указать версию через модульность:

Пример
sudo dnf install php-mbstring php-xml

Для включения конкретной версии PHP (если доступна через модульный поток):

Пример
sudo dnf module reset php
sudo dnf module enable php:8.1
sudo dnf install php-mbstring
…
Complete!

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

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