url image

Установка PHP расширений на Linux

Расширения 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

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!