0

我使用自制软件安装了 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 提取它们运行如下

。/配置,

制作,

须藤使安装,

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

我在用:

mac os 高山脉 10.13.3

php 7.1.12

地图 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 加密到另一台服务器并在那里解密。

预先感谢大家的帮助

4

1 回答 1

2

我能够使用 Pecl 安装 GnuPG 来解决这个问题。 这个链接也帮助了我很多。

运行以下命令以安装库:

  1. sudo apt-get -y install gcc make autoconf libc-dev pkg-config
  2. sudo apt-get -y 安装 libgpgme11-dev
  3. 须藤pecl安装gnupg
  4. 使用以下命令重新启动服务器:“service apache2 restart”或“sudo service phpX.Y-fpm-sp restart”,其中 xy 是 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 支持 => 启用
于 2019-09-30T20:05:59.567 回答