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

PHP Gnupg is not showing up as an extension in phpinfo() and I can't use it in php

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

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

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

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

我尝试了另一种方法: 我还从他们的网站上手动下载了 gnupg 和 gpgme,在

之后提取了它们 运行

./配置,

制作,

sudo make install,

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

我正在使用:

mac os 高山脉 10.13.3

php 7.1.12

mamp 4.4.1

gnupg 2.2.5(我用 brew install 试过这个版本)

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

gpgme 1.10.0

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

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

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

提前感谢大家的帮助

我能够使用 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 支持 => 启用