我的ubuntu php5.6和php7上安装了2个版本的php。 5.6设置为活动版本。现在我尝试使用下面的代码行安装GPG,并将其安装在/etc/php/7.0目录下。
sudo apt-get install php-gnupg
如何为php5.6安装它?
答案 0 :(得分:0)
php 5.6的扩展目录为/usr/lib/php/20131226
,php 7.0的扩展目录为/usr/lib/php/20151012
,如此命令所示:
php -r "print phpinfo();" | grep "extension_dir"
Pecl在/usr/lib/php/20131226/gnupg.so
中安装gnupg,因为在启用php 5.6时安装了pecl
pecl list-files gnupg
结论: PHP 7.0使用与安装gnupg不同的扩展目录。
第一次尝试不起作用:在php 7.0扩展目录中为gnup.so创建符号链接,指向php 5.6中的gnup.so
sudo ln -s /usr/lib/php/20131226/gnupg.so /usr/lib/php/20151012/gnupg.so
结果:
Warning: PHP Startup: gnupg: Unable to initialize module
Module compiled with module API=20131226
PHP compiled with module API=20151012
第二次尝试也没有用:
sudo pecl uninstall gnupg
sudo pecl install gnupg
产生相同的编译错误。
最终解决方案:
安装适用于php 7.0的gnupg的编译版本:请参阅php docs here
检查是否安装了gnupg
php -r 'var_dump(function_exists("gnupg_decrypt"));';