Compiling shared PECL extensions with the pecl command
PECL makes it easy to create shared PHP extensions. Using the » pecl command, do the following:
$ pecl install extname
This will download the source for extname, compile, and install extname.so into your extension_dir. extname.so may then be loaded via php.ini
By default, the pecl command will not install packages that are marked with the alpha or beta state. If no stable packages are available, you may install a beta package using the following command:
$ pecl install extname-beta
You may also install a specific version using this variant:
$ pecl install extname-0.1
Замечание: After enabling the extension in php.ini, restarting the web service is required for the changes to be picked up.
Коментарии
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