Расширения php используют, когда требуется расширить набор функций для работы PHP-скриптов на сервере. Каждое расширение имеет узкую функциональность и способно серьезно облегчить и ускорить выполнение конкретных задач, связанных с php-кодом. В панель ispmanager уже интегрированы популярные решения и часто достаточно только включить нужное. Но бывает и так, что для работы сайта или его компонентов необходимы другие расширения — и тут без установки вручную не обойтись.
Список практически всех доступных расширений есть на официальном сайте php.
Установленных версий php на сервере может быть несколько. Нативная версия PHP — версия из официального репозитория ОС. Дополнительно можно установить альтернативные версии. Это иногда необходимо, если для работы проекта требуется определенная версия php, которой нет в официальном репозитории.
Ниже мы рассмотрим несколько вариантов установки расширений php:
- через панель управления ispmanager. Большинство расширений уже установлено и подключено, но есть те, которые можно дополнительно установить или просто подключить.
- через стандартные пакетные менеджеры yum (CentOS) и apt (Ubuntu/Debian) для нативной версии php.
- через репозиторий модулей pecl — подойдёт как для нативной, так и для альтернативной версии php.
Дополнительно расскажем о том, как подключить расширения в консоли.
Установка расширений через панель ispmanager
Для начала нужно определить, на какой версии работает наш сайт. Для этого переходим в раздел Домены
- WWW-домены
, выбираем нужный домен и смотрим последний столбец Версия PHP
:
После этого переходим в раздел Настройки web-сервера
- PHP
, выбираем нужную версию php, расширения:
Далее воспользуемся поиском в верхнем правом углу — вводим туда название расширения. Если оно найдено, выбираем его. По необходимости устанавливаем и включаем:
Коротко о pecl
Прежде чем перейти к установке расширений с помощью пакетных менеджеров и альтернативного репозитория модулей, пару слов скажем о том, с какими ситуациями вы можете столкнуться во время работы с pecl. Ниже будут описаны некоторые из них:
Пример 1. Представим, что у нас две версии php:
Нативная (native) — /usr/bin/php
Альтернативная (alt) — /opt/php73/bin/php
— альтернативная версия php 7.3 в панели ispmanager.
Чтобы установить расширения php, для нативной и альтернативной версии необходимо использовать разные команды.
Для нативной версии:
pecl install Название_расширения
Для альтернативной, php 7.3, так:
/opt/php73/bin/pecl install Название_расширения
Поэтому важно помнить — необходимо указывать полный путь к бинарному файлу pecl. Ниже будут указаны команды установки, без полного пути, так как они могут отличаться, вам нужно иметь это ввиду.
Пример 2. Если вы используете не самую свежую версию php, то во время установки расширения можете получить сообщение о ее несоответствии требованиям — по умолчанию выбираются расширения последних версий, которые часто требуют свежих версий php. Пример уведомления:
requires PHP (version >= 7.0.0, version <= 7.1.0), installed version is 5.6.40
В уведомлении указано, что версия php должна быть не ниже 7.0.0 и не выше 7.1.0, а мы пытаемся установить расширение на версию 5.6.40.
Чтобы понять, какая версия расширения нужна для установки на имеющуюся версию php (в данном случае 5.6.40), обратимся за помощью на официальный сайт. Ищем нужное расширение, переходим на его страницу:
Переходим в список изменений:
Находим в списке изменений, что последней версией расширения, поддерживающей php ниже 7 версии, является redis 2.2.8:
Из этого следует, что для установки нам нужно указать redis-2.2.8, например так (не забудьте поставить знак -
между названием расширения и его версией):
/opt/php56/bin/pecl install redis-2.2.8
Важно!
После установки любого из расширений нужно перезапускать apache2/httpd или php-fpm. Также не забудьте проверить, подключилось ли расширение:
/opt/php56/bin/php -m | grep название_расширения
О том, как установить популярное расширение ioncube, читайте в нашей инструкции
Установка расширений через apt, yum и pecl
Ниже описаны установки расширений для всех версий php — от установки зависимостей до подключения. Описание разделено на версию ОС и версию php: нативную (native) или альтернативную (alt). Будьте внимательны при установке расширений для альтернативной версии через pecl.
mcrypt
Во время установки на вопрос “libmcrypt prefix? [autodetect]” жмём Enter.
native:
apt install php-dev libmcrypt-dev pecl install mcrypt echo extension=mcrypt.so >> Путь_к_конфигу
alt:
apt install php-dev libmcrypt-dev Полный_путь/pecl install mcrypt echo extension=mcrypt.so >> Путь_к_конфигу
native:
yum install libmcrypt-devel php-mcrypt
alt:
yum install libmcrypt-devel php-devel gcc autoconf Полный_путь/pecl install mcrypt echo extension=mcrypt.so >> Путь_к_конфигу
ssh2
native:
apt install libssh2-1-dev php-ssh2
alt:
apt install libssh2-1-dev php-dev Полный_путь/pecl install ssh2 echo extension=ssh2.so >> Путь_к_конфигу
native:
yum install php-pecl-ssh2
alt:
yum install php-devel gcc autoconf libssh2-devel Полный_путь/pecl install ssh2 echo extension=ssh2.so >> Путь_к_конфигу
redis
Во время установки могут быть заданы вопросы:
enable igbinary serializer support? [no] : «Включить поддержку сериализации через igbinary?»
enable lzf compression support? [no] : «Включить поддержку сжатия через алгоритм lzf?»
enable zstd compression support? [no] : «Включить поддержку сжатия через алгоритм zstd?»
yes - да, no - нет
Для выбора yes, должны быть установлены соответствующие модули.
native:
apt install php-redis
alt:
apt install php-dev Полный_путь/pecl install redis echo extension=redis.so >> Путь_к_конфигу
native:
yum install php-pecl-redis
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install redis echo extension=redis.so >> Путь_к_конфигу
lzf
Во время установки будет задан вопрос:
Sacrifice speed in favour of compression ratio? [no] : «Жертвовать скоростью в пользу степени сжатия?»
yes - да, no - нет
При положительном ответе, будет высокая степень сжатия, но низкая скорость загрузки.
native:
apt install php-dev pecl install lzf echo extension=lzf.so >> Путь_к_конфигу
alt:
apt install php-dev Полный_путь/pecl install lzf echo extension=lzf.so >> Путь_к_конфигу
native:
yum install php-pecl-lzf
alt:
yum install php-devel gcc autoconf liblzf liblzf-devel Полный_путь/pecl install lzf echo extension=lzf.so >> Путь_к_конфигу
igbinary
native:
apt install php-igbinary
alt:
apt install php-dev Полный_путь/pecl install igbinary echo extension=igbinary.so >> Путь_к_конфигу
native:
yum install php-igbinary
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install igbinary echo extension=igbinary.so >> Путь_к_конфигу
zstd
apt install libzstd-dev php-dev Полный_путь/pecl install zstd echo extension=zstd.so >> Путь_к_конфигу
native:
yum install php-pecl-zstd
alt:
yum install php-devel gcc autoconf libzstd libzstd-devel Полный_путь/pecl install zstd echo extension=zstd.so >> Путь_к_конфигу
gmagick
native:
apt install php-gmagick
alt:
apt install ibgraphicsmagick1-dev php-dev Полный_путь/pecl install gmagick echo extension=gmagick.so >> Путь_к_конфигу
native:
yum install GraphicsMagick-devel php-pecl-gmagick
alt:
yum install GraphicsMagick-devel gcc autoconf php-devel Полный_путь/pecl install gmagick echo extension=gmagick.so >> Путь_к_конфигу
APCu
native:
apt install php-apcu
alt:
apt install php-dev Полный_путь/pecl install apcu echo extension=apcu.so >> Путь_к_конфигу
native:
yum install php-pecl-apcu
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install apcu echo extension=apcu.so >> Путь_к_конфигу
phalcon
Одним из обязательных требований — наличие установленного расширения PSR. Также потребуется свободные 2 Гб оперативной памяти для компиляции через pecl.
Если во время установки через pecl, система выдаст сообщение об ошибке (см. ниже), значит не хватает оперативной памяти:
cc: fatal error: Killed signal terminated program cc1 compilation terminated. make: *** [Makefile:194: phalcon.lo] Error 1 ERROR: `make' failed
native:
Подключаем репозиторий:
curl -s "https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh" | bash
Ставим расширение, вместо X указываем версию php:
apt install php7.X-phalcon
alt:
apt install php-dev re2c libpcre3-dev Полный_путь/pecl install phalcon echo extension=phalcon.so >> Путь_к_конфигу
native:
yum install php-phalcon4
alt:
yum install gcc autoconf re2c pcre-devel php-devel Полный_путь/pecl install phalcon echo extension=phalcon.so >> Путь_к_конфигу
PSR
native:
apt install php-psr
alt:
apt install php-dev Полный_путь/pecl install psr echo extension=psr.so >> Путь_к_конфигу
native:
yum install php-pecl-psr
alt:
yum install php-devel gcc autoconf Полный_путь/pecl install psr echo extension=psr.so >> Путь_к_конфигу
Подключение расширения через консоль
Еще один важный момент. После того, как вы установите нужное расширение php, необходимо его подключить. А точнее, прописать путь к конфигурационному файлу — если этого не сделать, то php не будет знать, что добавлено новое расширение.
Узнаём путь к общему конфигурационному файлу php, указывая полный путь к бинарному файлу, например для альтернативной версии php 7.1:
/opt/php71/bin/php -i | grep 'Configuration File'
Вывод будет следующим:
Configuration File (php.ini) Path => /opt/php71/etc Loaded Configuration File => /opt/php71/etc/php.ini
Необходимо значение /opt/php71/etc/php.ini