在ubuntu 16.04上为php5.6安装GNU PG(GPG)

时间:2016-10-26 10:21:42

标签: php apache gnupg ubuntu-16.04

我的ubuntu php5.6和php7上安装了2个版本的php。 5.6设置为活动版本。现在我尝试使用下面的代码行安装GPG,并将其安装在/etc/php/7.0目录下。

sudo apt-get install php-gnupg

如何为php5.6安装它?

1 个答案:

答案 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

第二次尝试也没有用

  1. 卸载pecl扩展程序:sudo pecl uninstall gnupg
  2. 激活php v 7.0
  3. 再次安装gnupg:sudo pecl install gnupg
  4. 产生相同的编译错误。

    最终解决方案

    安装适用于php 7.0的gnupg的编译版本:请参阅php docs here

    检查是否安装了gnupg

    php -r 'var_dump(function_exists("gnupg_decrypt"));';