CascadiaPHP 2024

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 the 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, a beta package may be installed using the following command:


$ pecl install extname-beta

A specific version may also be installed using this variant:


$ pecl install extname-0.1

Note:

After enabling the extension in php.ini, restarting the web service is required for the changes to be picked up.

add a note

User Contributed Notes 7 notes

up
19
giulliano dot scatalon dot rossi at gmail dot com
4 years ago
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
up
4
ezekial aikle
9 months ago
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
up
8
Bichis Paul
7 years ago
on Mageia Linux use urpmi

[afk@mageia5][~]$ sudo urpmi php-pear
up
9
ktcox at mail dot com
13 years ago
The Arch Linux package that contains PECL is 'php-pear'

# pacman -S php-pear
up
7
ericn at amazon dot com
10 years ago
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
up
7
zir dot echo at gmail dot com
16 years ago
Install pecl for gentoo:

emerge dev-php/PEAR-PEAR
up
3
pedro dot fonini at gmail dot com
16 years ago
to use the pecl, pear, or phpize commands in fedora, install the php-devel package:
$ yum install php-devel
To Top