Table of Contents

How To Install a PECL Extension For LSPHP?

You may need a certain PHP PECL extension to get your application working.

There are several other ways to get a PHP PECL extension installed:

Check The LiteSpeed Repository

If you installed lsphp5x or lsphp7x through the LiteSpeed CentOS repository, you can check if the PECL extension is already available in the repository.

For example, to check imagick's availability in lsphp55, you would enter the following in to the terminal:

yum search lsphp55-pecl-imagick

or

yum list lsphp55-pecl*

If the extension is there, simply yum install and your all set.

If the extension is not in our repository, you can send a request to support@litespeedtech.com requesting it's inclusion and we will evaluate the possibility of adding it.

Use "./pecl install" command

Install lsphp5x-pear or lsphp70-pear package, which will install pecl under /usr/local/lsws/lsphp5x/bin/. Then use the usual method of /usr/local/lsws/lsphp5x/bin/pecl install extention-name.

yum install lsphp56-pear
yum install ImageMagick-devel
/usr/local/lsws/lsphp56/bin/pecl install imagick

Edit related php.ini file to enable extention imagick:

vi /usr/local/lsws/lsphp56/etc/php.ini

and add the following:

extension=imagick.so

restart LSWS.

Install The PEAR Package Manager

You can also install the PEAR package manager to manage PECL extensions.

cd /usr/local/lsws/lsphp55/bin
wget http://pear.php.net/go-pear.phar
./lsphp go-pear.phar

There is a bug in PECL scripts when installed this way, which omits dynamic PHP modules including XML. You can patch it by simply editing it to remove the ā€œ-nā€ cauisng the problem:

vi /usr/local/lsws/lsphp55/bin/pecl
  

Remove ā€œ-nā€ from the following:

exec $PHP -C -n -q $INCARG -d date.timezone=UTC -d output_buffering=1 -d variables_order=EGPCS -d safe_mode=0 -d register_argc_argv="On" $INCDIR/peclcmd.php "$@"
  

then, using imagick for example, run

/usr/local/lsws/lsphp55/bin/pecl install imagick

imagick.so should now be installed to the correct location.

chmod a+x /usr/local/lsws/lsphp55/lib64/php/modules/imagick.so

Lastly, edit your php.ini file to enable extension

extension=imagick.so

and restart LSWS.

Compile From Source Code

You can also build the required PECL extension from source code yourself.

Let's look at an example with the PECL imagick extension on a CentOS machine. This extension is not available in the LiteSpeed repository at the time of this writing. You can perform the following steps to build it for lsphp55 yourself.

yum install epel-release
yum install gcc gcc-c++ make autoconf glibc rcs #(setup build environment)
yum install lsphp55-devel #( need devel package) 
yum install ImageMagick-devel  # need ImageMagick-devel
wget https://pecl.php.net/get/imagick-3.1.2.tgz
tar -zxvf imagick-3.1.2.tgz
cd imagick-3.1.2
/usr/local/lsws/lsphp55/bin/phpize
./configure --with-imagick=/usr/local/lsws/lsphp55 --with-php-config=/usr/local/lsws/lsphp55/bin/php-config
make
make install

The imagick extension is now installed to the following directories:

Installing shared extensions:     /usr/local/lsws/lsphp55/lib64/php/modules/
Installing header files:          /usr/local/lsws/lsphp55/include/php/

Modify the php.ini file by adding the following and restart LSWS.

extension = imagick.so

Check the phpinfo.php page and you should see imagick enabled.

You can do similar with other LSPHP versions and PECL extensions.

Let's look at another example with the PECL imagick extension on a Ubuntu/Debian machine. Assuming that you have install lsphp70 through LiteSpeed APT repository.

apt-get install libmagickwand-dev pkg-config build-essential
mkdir -p ~/tmp
pushd ~/tmp
wget https://pecl.php.net/get/imagick-3.4.3.tgz
tar -xf imagick-3.4.3.tgz
cd imagick-3.4.3
  /usr/local/lsws/lsphp70/bin/phpize
  ./configure --with-php-config=/usr/local/lsws/lsphp70/bin/php-config7.0
  make
  make install
  echo "extension=imagick.so" >> /usr/local/lsws/lsphp70/etc/php/7.0/mods-available/40-imagick.ini
  /usr/local/lsws/bin/lswsctrl restart
 popd

See Also