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



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

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

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

[SymfonyComponentDebugExceptionFatalThrowableError]
Class 'gnupg' not found

我尝试了另一种方法: 我还从他们的网站手动下载了 gnupg 和 gpgme 提取它们,它们运行如下

。/配置

须藤制作安装,

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

我正在使用:

Mac OS High Sierra 10.13.3

PHP 7.1.12

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

提前感谢大家的帮助

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

运行以下命令以安装库:

  1. sudo apt-get -y install gcc make autoconf libc-dev pkg-config
  2. sudo apt-get -y install libgpgme11-dev
  3. sudo pecl install gnupg
  4. 使用"service apache2 restart"或"sudo service phpX.Y-fpm-sp restart"重新启动服务器,其中 x.y 是 php 的主要次要版本。注意:有多种不同的方法可以重新启动系统以使更改生效,因此请根据服务器和您的php版本自行研究如何执行此操作。
  5. 正如我在问题中所解释的,尝试找到正确的 php.ini 文件来添加"extension=gnupg.so"。 最常见的地方是.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
    support => enabled

最新更新