Установка PHP расширений выполняется из репозитория или из исходников с компиляцией на самом сервере. Ко второму варианту прибегают когда нельзя использовать первый — если расширения нет в репозитории.
Установка PHP расширений из репозитория
В большинстве случаев расширение можно установить из репозитория. В репозитории включаются все популярные расширения.
Выяснить, что доступно для установки можно так (на примере php7.0):
apt-cache search php7.0
[…skipped…]
php7.0-mbstring — MBSTRING module for PHP
php7.0-mcrypt — libmcrypt module for PHP
php7.0-mysql — MySQL module for PHP
php7.0-odbc — ODBC module for PHP
php7.0-opcache — Zend OpCache module for PHP
php7.0-pgsql — PostgreSQL module for PHP
php7.0-phpdbg — server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-pspell — pspell module for PHP
[…skipped…]
Производится поиск по маске, среди результатов непосредственно php7.0 и все расширения.
Так, если планируется работа с PostgreSQL, то нужно установить php7.0-pgsql.
Любая установка — потенциально опасная операция, поэтому сначала ее следует проводить с ключом --dry-run
. В этом случае будут проверены зависимости, но изменений в систему фактически не вносится.
apt-get install
--dry-run
php7.0-pgsql
Если ошибок не возникло, но расширение можно устанавливать
apt-get install php7.0-pgsql
Теперь расширение php7.0-pgsql установлено, осталось его подключить.
Сборка расширений PHP
Сборку можно выполнять на рабочей машине, но лучше использовать для этого другой сервер с аналогичной конфигурацией.
Компиляция нужна для расширений, отсутствующих в репозитрии и встречающихся реже.
Исходники расширений можно найти на сайте https://pecl.php.net/
Допустим, что требуется stomp (https://pecl.php.net/package/stomp)
Скриншот с сайта pecl.php.net:
Нужно скачать исходники
wget https://pecl.php.net/get/stomp-2.0.2.tgz
Затем распаковать архив
tar xvf stomp-2.0.2.tgz
И перейти в каталог с файлами расширения
cd stomp-2.0.2
Далее при условии, что на сервере используется одна версия PHP:
phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100412
Zend Extension Api No: 20100412
Если больше одной версии — потребуется указывать phpize под конкретную версию и phpconfig. Это бинарные файлы, использующиеся для сборки. Для обоих файлов задаются полные пути.
Например:
/opt/php56/phpize -c /opt/php56/phpconfig
Ошибки в логах после сборки появляются про разные версии PHP Api Version и Zend Extension Api No говорят о не тех использованных phpize и phpconfig.
При отсутствии phpize устанавливается пакет php5-dev
apt-get install php5-dev
./configure
[…skipped…]
configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands
Далее компиляция
make
Build complete.
Don't forget to run 'make test'.
make test
make install
Installing shared extensions: /usr/lib/php7.1.21/20160303/
В результате получаем файл /usr/lib/php7.1.21/20160303/stomp.so, который нужно подключить в php.ini
При условии, что используется php той версии, для которой собрано расширение и конфигурационный файл размещается по пути /etc/php/php.ini:
echo "extension=stomp.so" >> /etc/php/php.ini
Далее все процессы можно завершить, чтобы быстрее увидеть результат.
Для Ubuntu/Debian
systemctl restart apache2
Для CentOS
systemctl restart httpd
Так выполняется установка PHP расширений, которых нет в репозиториях.
Читайте о том как проверить текущие настройки PHP. Это необходимый шаг после того как выполнена установка PHP расширения тем или иным способом или изменены настройки для расширений.