Установка и конфигурация PHP модулей для серверного окружения
Способы установки модулей PHP
Как установить модуль PHP через пакетный менеджер APT?
Основной и наиболее простой метод для систем на базе Debian или Ubuntu. Модули распространяются в пакетах вида php-<имя_модуля>. Перед установкой обновляется список пакетов.
sudo apt update
sudo apt install php-mbstring php-xml php-curlPhp включить модуль (включение модуля 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