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


Установка 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:

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


Нужно скачать исходники

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 расширения тем или иным способом или изменены настройки для расширений.

Сказать спасибо
Categories: