我使用自制软件安装了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 来解决这个问题。 这个链接也对我帮助很大。
运行以下命令以安装库:
- sudo apt-get -y install gcc make autoconf libc-dev pkg-config
- sudo apt-get -y install libgpgme11-dev
- sudo pecl install gnupg
- 使用"service apache2 restart"或"sudo service phpX.Y-fpm-sp restart"重新启动服务器,其中 x.y 是 php 的主要次要版本。注意:有多种不同的方法可以重新启动系统以使更改生效,因此请根据服务器和您的php版本自行研究如何执行此操作。
- 正如我在问题中所解释的,尝试找到正确的 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