我正在尝试使用PHP中的PGP(gnupg)解密一条简单消息。
但是我总是收到此错误:get_key failed
在堆栈溢出时,我看到很多人遇到此问题,但是我无法解决它。
我遵循了本教程,其中包括如何设置文件的权限:http://46dogs.blogspot.nl/2007/11/setting-up-gnupg-gpg-for-use-with-php.html

这是我正在使用的脚本。我的PGP密钥不包含相位短语:

<?php
putenv("GNUPGHOME=/home/user/.gnupg/");
$gpg = new gnupg();
$gpg -> addencryptkey("2ADA21BDC9C96556EA0758F04A935AE0010AE203");
$encrypted_text = $gpg -> encrypt("just a test");
//echo $encrypted_text;

$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
try{
$gpg -> adddecryptkey("2ADA21BDC9C96556EA0758F04A935AE0010AE203","");
$decrypted_text = $gpg -> decrypt($encrypted_text);
} catch (Exception $e) {
    echo $e;
}
echo $decrypted_text;
?>


文件(pubring.gpg,trustdb.gpg和secring.gpg)的权限与教程完全相同(仅用户更改为nginx)。
加密部分起作用。但是解密是行不通的。

有人知道哪里出问题了吗?

我正在运行Centos和php5。

最佳答案

线程中的代码很好,但是请记住,您的nginx用户不同于user,并且nginx在访问其gnupg密钥时会遇到问题,因为(默认情况下)/home/user/.gnupg仅可访问OWNER(user登录名)。
最简单的方法是为Nginx用户设置主目录,并为此创建自己的gnupg密钥。否则,仅当您使用user登录名登录终端时,运行此php才会成功(因为/home/user/.gnupg)

关于php - PHP gnupg get_key失败错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35705359/

10-10 14:49