我需要使用gnupg_decrypt
来解密正在发送给我们但无法使其工作的文件。我使用gnupg_keyinfo
列出所有的公钥,它返回一个空数组。有谁知道为什么会发生这种情况?PHP的GnuPG keyinfo函数显示空数组
我使用的代码是:
$res = gnupg_init();
$info = gnupg_keyinfo($res, '');
print_r($info);
在上面的链接将''
,因为它应该列出所有密钥的模式的意见展望。
我已经在这里使用提供 http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/gpg-cs.html
的信息建立一个公共密钥我的服务器上,当我运行GPG --list-键就说明它被成功创建。
我读的地方,你必须把
putenv('GNUPGHOME=/tmp');
在页面的顶部,以便为它工作,但没有到该文件夹中的关键没有提到,我无法找到用以上设置的位置。
我也读我可能没有权限存储密钥的文件夹,但我不知道它在哪里。
任何人都可以帮忙吗?
谢谢
得到这个工作我做了以下
chown -R {{user}} ~/.gnupg
chmod 600 ~/.gnupg/*
chmod 700 ~/.gnupg
然后重新导入使用gnupg_import
功能键
'ls -al〜/ .gnupg /'。验证该目录及其包含的文件是否可以通过Web服务器访问。您可能想从命令行尝试脚本:这将帮助您决定是否是权限问题。像'php -r'print_r(gnupg_keyinfo(gnupg_init(),''));'' – bishop
您好主教,谢谢您的回复。我已经从命令行运行脚本,它的工作,所以我想这排除了权限问题(感谢您的提示)。我发布了从ls -al〜/ .gnupg /返回的内容截图。它对我来说看起来不错,对你来说呢? r和w的读写是否正确? –
实际上,因为它*在命令行上成功*而在Web服务器上失败*意味着它*是一个权限问题。您的屏幕快照显示这些文件属于root用户,并且您的Web服务器可能不会以root身份运行。您需要将这些文件的所有权更改为Web服务器的所有权。像'chown -R apache〜/ .gnupg'。找出网络服务器用户,例如'ps aux | egrep'(apache | httpd)''。 – bishop