GPG总是返回结果为2。我的代码如下:
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile";
其中,outfile是加密数据将写入的文件,而infile是未加密数据。
我不知道为什么会出现这种情况。请问有人能告诉我错在哪里吗?谢谢。
GPG总是返回结果为2。我的代码如下:
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile";
其中,outfile是加密数据将写入的文件,而infile是未加密数据。
我不知道为什么会出现这种情况。请问有人能告诉我错在哪里吗?谢谢。
GPG询问您是否要继续使用未签名的密钥进行加密。由于没有用户可以输入Y
,因此它会产生错误。
要解决此问题,请添加以下开关
--yes
和 --always-trust
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile --homedir /path/to/dir";
man gpg
的相关信息:
--homedir directory
将主目录的名称设置为directory。如果不使用此选项,则默认为“~/.gnupg”。在选项文件中使用它没有意义。这也会覆盖环境变量$GNUPGHOME。
gpg.exe --edit-key KEY_NAME
trust
5 (level of trust)
Y
Save
我在XP系统上,使用--always-trust
参数时遇到了一些问题,这个方法帮助我解决了问题。
我有同样的问题,但是对于解码命令而言。
首先,通常情况下,您可以通过将stderr重定向到stdout来获取错误消息。
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile 2>&1";
然后您可以修改gpg的参数以满足您的需求。因为我使用密码短语加密了一些文件,所以我不得不添加几个参数。
我从以下内容开始:
gpg -o $out -d $path
gpg --batch --passphrase $pass_phrase --no-tty -o $outfile -d $path_to_encoded_file
我希望这能对某人有所帮助。
/something/something/.gnupg
吗?我还将GNUPGHOME
设置为.gnupg
文件夹的路径。 - koralartsGNUPGHOME
不起作用。" 我认为你应该使用--homedir。是的,应该是这样的。但是这个目录需要被你的脚本有写入权限。 - Thiago Silveira--yes
和--always-trust
,因为它正在请求输入,但由于它是在PHP中,它无法获取该输入,因此会出现错误。 - koralarts