Extension dir php 5.6 est /usr/lib/php/20131226
et l'extension dir pour php 7.0 est /usr/lib/php/20151012
que cette commande affiche:
php -r "print phpinfo();" | grep "extension_dir"
Pecl installe GnuPG dans /usr/lib/php/20131226/gnupg.so
car le PECL a été installé lorsque PHP 5.6 est activé
pecl list-files gnupg
Conclusion: PHP 7.0 utilise un répertoire d'extension différent de celui où gnupg est installé.
Essayez d'abord ce qui ne fonctionne pas: Créer un lien symbolique pour gnup.so dans le répertoire d'extension php 7.0 qui pointe vers l'intérieur gnup.so php 5,6
sudo ln -s /usr/lib/php/20131226/gnupg.so /usr/lib/php/20151012/gnupg.so
Résultats dans:
Warning: PHP Startup: gnupg: Unable to initialize module
Module compiled with module API=20131226
PHP compiled with module API=20151012
Deuxième essai qui ne fonctionnait pas aussi:
- Désinstaller extension PECL:
sudo pecl uninstall gnupg
- Activer php version 7.0
- Installer GnuPG nouveau:
sudo pecl install gnupg
Donne même erreur de compilation.
solution finale:
installer une version compilée du GnuPG qui fonctionne avec php 7.0: voir php docs here
Vérifiez si GnuPG est installé
php -r 'var_dump(function_exists("gnupg_decrypt"));';
La question est: comment avez-vous réussi à installer les deux versions de php en parallèle? Cela ne peut évidemment pas se produire en utilisant les paquets fournis. Donc, je vous suggère de suivre la même approche que vous avez fait à l'époque pour installer cette extension maintenant. – arkascha
Ubuntu 16.04 est livré avec php7. J'ai installé 5.6 plus tard. Évidemment, nous pouvons sélectionner n'importe quelle version de php à utiliser. – xxxx
Vous pouvez en effet basculer entre les versions en utilisant la gestion normale des paquets. Mais vous ne pouvez pas installer des versions différentes en parallèle. C'est parce que les paquets sont en conflit. La question demeure donc: comment avez-vous installé cette deuxième version de php? – arkascha