Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install php extension using pecl for specific php version, when several php versions installed in system?

I have installed both php5.6 and php7.0 from PPA on Ubuntu according to this manual

http://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

But I didn't get how to install extensions using pecl for php5.6 or php7.0.

For example I have already installed version of libevent or amqp in php5.6.

Now when I type pecl install libevent and my active php version is php7.0 (using update-alternatives --set php /usr/bin/php7.0),peclreturns message thatlibevent` already installed.

But it was installed only for php5.6 (when this version was active) and now I want to do it for php7.0.

Which commands could help me?

UPD

I have found this commands for switch pecl to php7.0 and packet them to executable bash scripts:

#!/bin/bash  sudo update-alternatives --set php /usr/bin/php7.0  sudo pecl config-set php_ini /etc/php/7.0/cli/php.ini sudo pecl config-set ext_dir /usr/lib/php/20151012/ sudo pecl config-set bin_dir /usr/bin/ sudo pecl config-set php_bin /usr/bin/php7.0 sudo pecl config-set php_suffix 7.0 

and for php5.6

#!/bin/bash  sudo update-alternatives --set php /usr/bin/php5.6  sudo pecl config-set php_ini /etc/php/5.6/cli/php.ini sudo pecl config-set ext_dir /usr/lib/php/20131226/ sudo pecl config-set bin_dir /usr/bin/ sudo pecl config-set php_bin /usr/bin/php5.6 sudo pecl config-set php_suffix 5.6 

But they are not help, pecl still gives me list of already installed extensions to php5.6, even if I switched to php7.

pecl list Installed packages, channel pecl.php.net: ========================================= Package  Version State amqp     1.7.1   stable libevent 0.1.0   beta stats    1.0.3   stable 

It should be empty for php7.0 !

How to solve the problem?

UPD

For amqp I have just installed php-amqp package without using pecl.

apt-get install php-amqp 

And libevent still not exists for php7. But I hadn't found a way to switch pecl installation between 5.6 and 7 version, so question is still open.

like image 470
Oleg Abrazhaev Avatar asked Nov 04 '16 09:11

Oleg Abrazhaev


People also ask

Can I install multiple versions of PHP?

Add a PHP Repository So you'll need to add the PHP repository in your system to install the multiple PHP versions. Once the repository is up-to-date, you can proceed to install multiple PHP versions.


2 Answers

When pecl throws error is already installed and is the same as the released version

Switch to required php, php-config, phpize versions before installing from pecl

Just run it installation with force flag

sudo pecl install -f <package-name> 
like image 20
Panoptik Avatar answered Oct 14 '22 06:10

Panoptik


Here's what worked best for me when trying to script this (in case anyone else comes across this like I did):

$ pecl -d php_suffix=5.6 install <package> $ pecl uninstall -r <package>  $ pecl -d php_suffix=7.0 install <package> $ pecl uninstall -r <package>  $ pecl -d php_suffix=7.1 install <package> $ pecl uninstall -r <package> 

The -d php_suffix=<version> piece allows you to set config values at run time vs pre-setting them with pecl config-set. The uninstall -r bit does not actually uninstall it (from the docs):

vagrant@homestead:~$ pecl help uninstall pecl uninstall [options] [channel/]<package> ... Uninstalls one or more PEAR packages.  More than one package may be specified at once.  Prefix with channel name to uninstall from a channel not in your default channel (pecl.php.net)  Options:   ...   -r, --register-only         do not remove files, only register the packages as not installed   ... 

The uninstall line is necessary otherwise installing it will remove any previously installed version, even if it was for a different PHP version (ex: Installing an extension for PHP 7.0 would remove the 5.6 version if the package was still registered as installed).

like image 94
Matt Zuba Avatar answered Oct 14 '22 06:10

Matt Zuba