Apache 不想加载 GnuPG PHP

Apache 不想加载 GnuPG PHP

我在 SO 中问过这个问题,但也许这里更适合问。我通过 Pecl 安装了 GnuPG。生成公钥/私钥等。我已经php.ini

extension=gnupg.so

当我尝试运行简单代码时,出现了未定义的 gnupg_init() 错误,按照我的理解,这意味着模块未加载。

Fatal error: Uncaught Error: Call to undefined function gnupg_init() 

这是我尝试运行的代码

putenv('GNUPGHOME=/home/stan/.gnupg');
$res = gnupg_init();
gnupg_seterrormode($res,GNUPG_ERROR_WARNING);
gnupg_addencryptkey($res,"myfingerprint");
$enc = gnupg_encrypt($res, "just a test");
echo $enc;

系统是ubuntu+apache,下面是.gnupg/

srwxrwxr-x 1 stan stan    0 Aug 16 08:12 S.gpg-agent
-rw------- 1 stan stan   32 Aug 16 10:02 pubring.kbx~
drwx------ 2 stan stan 4096 Aug 16 10:04 private-keys-v1.d
-rw-rw-r-- 1 stan stan 1361 Aug 16 10:04 pubring.kbx
drwx------ 2 stan stan 4096 Aug 16 10:04 openpgp-revocs.d
-rw------- 1 stan stan 2603 Aug 16 10:19 secring.gpg
-rw------- 1 stan stan 1209 Aug 16 10:19 pubring.gpg~
-rw------- 1 stan stan 1360 Aug 16 10:19 trustdb.gpg
-rw------- 1 stan stan  600 Aug 16 10:19 random_seed
-rw------- 1 stan stan 1209 Aug 16 10:19 pubring.gpg

这是我的 /var/www/

drwxrwsr-x 3 stan www-data 4096 Jul 14 11:23 www
drwxr-sr-x 7 stan www-data 4096 Aug 16 09:59 html

我还确认已安装并加载

$ php --info | grep gnupg
gnupg
gnupg support => enabled

答案1

这可能取决于您使用的存储库和可用的软件包。正如我在评论中指出的那样,当您在 php 脚本中运行 phpinfo(); 并从浏览器加载它时,您会看到 mod_php 没有加载 gnupg 扩展。

在我的 CentOS 服务器上,我们使用 Remi 存储库来安装 PHP。他有一个名为 php-pecl-gnupg 的软件包。当我安装它时,它会安装 mod_php 所需的共享对象,我可以确认它可用于我的 Web 代码。

因此,我们已经看到命令行 php 和 apache 中的 mod_php 不会加载相同的配置,因此这样做php --info并不一定能显示 Apache 中的 mod_php 配置了什么。查看您的 phpinfo() 文件并查看它正在读取哪个配置文件(它显示在前几行中)。然后确保您有extension=gnupg.so该配置文件并确保它在同一目录中查找扩展。

相关内容