【发布时间】:2019-02-18 13:59:27
【问题描述】:
我刚刚安装了 gnupg pecl 扩展和所需的库,在我的 phpinfo() 中似乎启用了 gnupg;
php -i | grep gnupg
/etc/php/7.3/cli/conf.d/20-gnupg.ini,
gnupg
gnupg support => enabled
当我尝试调用 gnupg_init() 时它成功并给我资源 ID 但后来我尝试了 gnupg_import,但它总是失败并返回 false
当我尝试在 shell 中执行命令时:gpg --import somekey.txt 它可以工作 这是我的测试test.key:
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
Epd4OakW3tIP+3vqfv0nJ+weizFNq5Tj
=wIHb
-----END PGP PUBLIC KEY BLOCK-----
在我的 Web 应用程序中使用 gpg 之前,我是否必须以某种方式初始化它?请指出我正确的方向
通过指纹导出先前导入的密钥:
gpg --export --armor B4A57058391D51C5853BBFA317916E7C04C17179 > /var/www/test/test.key
下面是我的test.php:
<?php
$key=file_get_contents('/var/www/test/test.key');
$gpg=gnupg_init();
print_r($gpg); //returns Resource id #7
$res=gnupg_import($gpg, $key);
print_r($res); //returns empty string
var_dump($res); //returns (bool)false
$er=gnupg_geterror($gpg);
var_dump($er); //return (bool)false
?>
附言使用 nginx+php7.3-fpm 和 gpg 1.4.23 我的 gnupg 主目录位于 /var/www/.gnupg 属于 nginx/php 用户,并且需要权限 600/700
【问题讨论】:
-
您的 PHP 错误日志中是否有任何警告,或者带有
ini_set('display_errors', 'on'); error_reporting(E_ALL);?通常,在失败时返回 false 的函数会引发描述特定错误的警告。 -
我收到了这个警告:php-fpm7.3[31083]: [15-Feb-2019 05:02:50] 注意:PHP 消息:PHP 警告:模块 'gnupg' 已加载到未知中在第 0 行。error_reporting 为 E_ALL display_errors=On
-
@МишкаОлимпийский 在您的
gnupg_import()调用失败后,gnupg_geterror()的返回值是多少? -
@Progman (bool)false
-
@МишкаОлимпийский 请编辑您的问题以包含您现在拥有的源代码以及添加的
gnupg_geterror()检查。