Comment installer l'extension php à l'aide de pecl pour certaines version de php, lorsque plusieurs versions de php installé dans le système?
J'ai installé php5.6 et php7.0 de l'app sur Ubuntu en fonction de ce manuel
http://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu
Mais je ne savais pas comment installer des extensions à l'aide de pecl
pour php5.6 ou php7.0.
Par exemple, j'ai déjà installé la version de libevent
ou amqp
en php5.6.
Maintenant quand je tape pecl install libevent
et ma version de php est php7.0 (à l'aide de update-alternatives --set php /usr/bin/php7.0),
peclreturns message that
libevent est déjà installé.
Mais il a été installé uniquement pour php5.6 (lorsque cette version a été active) et maintenant je veux le faire pour php7.0.
Commandes qui pourrait m'aider?
UPD
J'ai trouvé cette commande pour basculer pecl pour php7.0 et des paquets de mer à l'exécutable scripts bash:
#!/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
et de 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
Mais ils ne sont pas aider, pecl me donne encore list
de déjà des extensions installées à php5.6, même si je suis passé à 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
Il doit être vide pour php7.0 !
Comment résoudre le problème?
UPD
Pour amqp je viens d'installer php-amqp paquet sans l'aide de pecl.
apt-get install php-amqp
Et libevent encore n'existe pas pour php7.
Mais je n'avais pas trouvé un moyen de l'interrupteur pecl installation entre 5,6 et 7 version, donc, la question est encore ouverte.
J'ai besoin des deux pour mes besoins spécifiques. Par exemple, j'ai 2 projets, l'un doit s'exécuter avec 5.6, le second, avec 7. Et je n'ai pas le temps de migrer premier à php7.
Avez-vous trouvez une solution?
ChickenFeet, je pense que la première réponse est ici un moyen d'aller
OriginalL'auteur Oleg Abrazhaev | 2016-11-04
Vous devez vous connecter pour publier un commentaire.
Voici ce qui a fonctionné le mieux pour moi lors de la tentative de ce script (au cas où quelqu'un d'autre vient à travers comme je l'ai fait):
La
-d php_suffix=<version>
pièce vous permet de définir config valeurs au moment de l'exécution vs pré-réglage avecpecl config-set
. Leuninstall -r
peu ne fait pas le désinstaller (à partir de la documentation):La désinstallation de ligne est nécessaire, sinon l'installation il va supprimer toute version précédemment installée, même si c'était pour une autre version de PHP (ex: Installation d'une extension pour PHP 7.0 permettrait de supprimer la version 5.6 si le paquet était toujours inscrit comme installé).
OriginalL'auteur
J'ai rencontré ce même problème pendant la mise à jour mon Vagrant box avec XHGui, comme XHGui nécessite mongodb. Je voulais être en mesure de soutenir le profilage sur les deux PHP 5.6 et 7.0.
J'ai creusé le pecl code source, et constaté qu'il y a
metadata_dir
option de configuration. C'est un chemin vers un répertoire où l'état actuel des paquets installés. Malheureusement, ce n'est pas déjà préfixée par la version de PHP. Si vous essayez de le régler avecpecl config-set
, vous obtenez une opaque "échoué" erreur. Il s'avère que l'établissement n'est pas dans la liste blanche comme configuable dans le\PEAR_Config
classe:Dans PECL du monde "global" signifie qu'il ne peut être réglé au moment de l'installation, et non pas après.
Il y a un problème dans le PPA traqueur sur github: https://github.com/oerdnj/deb.sury.org/issues/407
La suggestion finale il y a de construire de l'extension manuellement pour les autres versions de PHP. J'ai fini par utiliser pecl pour PHP 7 extensions, et le manuel s'appuie pour 5.6. Assurez-vous d'exécuter
update-alternatives
pour php-config et la commande phpize, et pas seulement de php avant de bâtiment:Puis, extrait de l'extension et de le construire. Ces étapes à partir du problème ci-dessus, a travaillé pour moi avec mongodb extension:
phpize5.6 && ./configure --with-php-config=php-config5.6 && make && sudo make install
OriginalL'auteur
Quand pecl déclenche une erreur est déjà installé et est la même que la version publiée
Commutateur requis, php, php-config, la commande phpize versions avant d'installer depuis pecl
Il suffit de lancer l'installation avec indicateur de force
OriginalL'auteur