【问题标题】:install GNU PG (GPG) for php5.6 on ubuntu 16.04在 ubuntu 16.04 上为 php5.6 安装 GNU PG (GPG)
【发布时间】:2017-03-08 15:59:05
【问题描述】:

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

sudo apt-get install php-gnupg

php5.6如何安装?

【问题讨论】:

  • 问题是:您是如何设法同时安装两个 php 版本的?使用提供的软件包显然不会发生这种情况。所以我建议你现在按照你当时的方法安装这个扩展。
  • Ubuntu 16.04 自带 php7。我后来安装了 5.6。显然我们可以选择任何版本的php来使用。
  • 您确实可以使用正常的包管理在版本之间切换。但是您不能并行安装不同的版本。那是因为包是冲突的。所以问题仍然存在:你是如何安装第二版 php 的?
  • 您可以在运行您的应用程序时在 apache 中启用/禁用将指向特定版本的 php 的 mod。 askubuntu.com/questions/761713/…
  • 这无疑是真的。但它根本没有回答您如何并行安装第二个版本。我坚持这样做,因为这会告诉你如何添加该扩展。

标签: php apache gnupg ubuntu-16.04


【解决方案1】:

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,因为pecl 是在启用php 5.6 时安装的

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

给出同样的编译错误。

最终解决方案

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

检查是否安装了 gnupg

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 2023-04-06
    • 2017-05-24
    • 2017-11-17
    • 1970-01-01
    • 2017-04-12
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多