PHP Gnupg没有显示为phpinfo()中的扩展,我无法在php

时间:2018-02-24 00:41:09

标签: php encryption mamp gnupg gpgme

我使用自制软件安装了gnupg和gpgme。 我还链接了两个并确保通过运行brew gnupg install和brew gpgme install来安装和链接它们并获得确认安装和版本的消息。

我已将gnupg.so文件放在扩展路径中,并将extension = gnupg.so添加到php.ini文件中。

我从infophp页面获得了扩展路径和特定的php.ini路径。 重新启动mamp之后,我仍然没有看到gnupg或gpgme作为phpinfo的扩展,我也不能在我的php代码中使用gnupg。
使用$gpg = new \gnupg();这给了我一个错误,说gnupg类不存在。

[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'gnupg' not found

我尝试了另一种方法: 我还从他们的网站上手动下载了gnupg和gpgme,然后将它们运行起来

./配置,

请,

sudo make install,

并且能够再次成功安装,同时确保gnupg.so与phpinfo页面中显示的扩展路径相同,并且还将extension=gnupg.so添加到phpinfo中显示的同一个php.ini中page(我在php.ini文件中的所有其他扩展名后面添加了extension = gnupg.so)

我正在使用:

mac os high sierra 10.13.3

php 7.1.12

mamp 4.4.1

gnupg 2.2.5(我尝试使用brew安装此版本)

gnupg 1.4.0(我试过这个版本从gnupg.org下载)

gpgme 1.10.0

我也想知道,在希望修复上述问题之后,我是否需要在我的php文件中包含任何内容才能使用gnupg?

gnupg和gpgme有什么区别?我是否需要两者才能加密php中的文件?

如果我无法解决此问题,那么加密xml文件或包含文本数据的文件的另一种方法是什么?我需要将文件和FTP加密到另一台服务器并在那里解密。

提前感谢大家的帮助

1 个答案:

答案 0 :(得分:0)

我能够使用Pecl安装GnuPG来解决此问题。 This link helped me a lot as well.

运行以下命令以安装库:

  1. sudo apt-get -y install gcc make autoconf libc-dev pkg-config
  2. sudo apt-get -y安装libgpgme11-dev
  3. sudo pecl安装gnupg
  4. 使用以下命令重新启动服务器:“ service apache2 restart”或“ sudo service phpX.Y-fpm-sp restart”,其中x.y是php的major.minor版本。注意:有多种不同的方法可以重新启动系统,以使更改生效,因此请根据服务器和php版本,自行研究如何执行此操作。
  5. 正如我在问题中解释的那样,请尝试找到正确的php.ini文件,以将“ extension = gnupg.so”添加到其中。最常见的地方是php.ini:
    • /etc/php/7.2/apache2(您可以使用PHP版本而不是7.2)
    • /etc/php/7.2/cli(您可以使用PHP版本而不是7.2)

      更好的方法是从 phpinfo()
    • 中找出加载扩展的php.ini路径。

现在,使用以下命令验证一切是否正常:

  • “ php -i | grep -i gnup”

如果一切正常,您将看到以下内容:

  • /etc/php7.0-sp/conf.d/gnupg.ini,
    gnupg
    gnupg支持=>已启用