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.
运行以下顺序安装库:
- sudo apt-get -y install gcc make autoconf libc-dev pkg-config
- sudo apt-get -y 安装 libgpgme11-dev
- sudo pecl 安装 gnupg
- 重新启动您的服务器:"service apache2 restart",或 "sudo service phpX.Y-fpm-sp restart" 其中 x.y 是您的 php 的 major.minor 版本。注意:有多种不同的方法可以重新启动系统以使更改生效,因此请根据服务器和您的 php 版本自行研究如何进行。
- 正如我在问题中所解释的那样,尝试找到正确的 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 支持 => 启用
我使用自制软件安装了 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.
运行以下顺序安装库:
- sudo apt-get -y install gcc make autoconf libc-dev pkg-config
- sudo apt-get -y 安装 libgpgme11-dev
- sudo pecl 安装 gnupg
- 重新启动您的服务器:"service apache2 restart",或 "sudo service phpX.Y-fpm-sp restart" 其中 x.y 是您的 php 的 major.minor 版本。注意:有多种不同的方法可以重新启动系统以使更改生效,因此请根据服务器和您的 php 版本自行研究如何进行。
- 正如我在问题中所解释的那样,尝试找到正确的 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 支持 => 启用