Компиляция разделяемых расширений с помощью команды pecl
PECL позволяет легко создавать разделяемые расширения PHP. Используя » команду pecl, выполните следующее:
$ pecl install extname
Эта команда загрузит исходный код для расширения extname, скомпилирует и установит extname.so в вашу директорию extension_dir. Файл extname.so может быть затем загружен в php.ini
По умолчанию, команда pecl не будет устанавливать пакеты, отмеченные состоянием alpha или beta. Если нет доступных стабильных (stable) версий пакетов, вы можете установить beta-версию пакета, используя следующую команду:
$ pecl install extname-beta
Также, вы можете установить определенную версию используя такой вариант:
$ pecl install extname-0.1
Замечание:
После подключения расширения в php.ini необходимо перезапустить веб-сервер для того, чтобы изменения вступили в силу.
Коментарии
to use the pecl, pear, or phpize commands in fedora, install the php-devel package:
$ yum install php-devel
Install pecl for gentoo:
emerge dev-php/PEAR-PEAR
The Arch Linux package that contains PECL is 'php-pear'
# pacman -S php-pear
To compile pecl extensions on Amazon Linux AMIs, follow the tutorial at http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html and then install these additional required packages with the following command:
[ec2-user ~]$ sudo yum install php-devel zlib-devel curl-devel gcc
You should then be able to compile pecl extensions; for example, enter the following command to compile the pecl_http extension:
[ec2-user ~]$ sudo pecl install pecl_http
on Mageia Linux use urpmi
[afk@mageia5][~]$ sudo urpmi php-pear
To install the PECL on debian based linux distros (ubuntu, mint, kali, etc.)
Use the apitude command:
sudo apt-get install php-pear
I hope helped someone
Options to pass to configure (with -D or --configureoptions=) need to be specified this way in a Dockerfile RUN command:
RUN pecl install -D 'with-example-dir="/dir" enable-example-thing="yes"' package
or
RUN pecl install --configureoptions='with-example-dir="/dir" enable-example-thing="yes"' package
Otherwise, docker build might quote the command in a way that pecl doesn't parse correctly, and the build will fail with an error like this one:
PHP Fatal error: Uncaught TypeError: array_key_exists(): Argument #2 ($array) must be of type array, null given in /usr/local/lib/php/PEAR/Builder.php:397