我正在尝试使用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/