2

嗨,我正在使用 gpg 在 linux 中解密文件,我正在使用

shell_exec("gpg --batch --passphrase-file $passphrase_file -d $encrypted_file"); 

解密文件,但我收到以下错误。

gpg: gpg-agent is not available in this session
gpg: can't query passphrase in batch mode
gpg: Invalid passphrase; please try again ...
gpg: can't query passphrase in batch mode
gpg: Invalid passphrase; please try again ...
gpg: can't query passphrase in batch mode
4

2 回答 2

1

此错误使逗号和不喜欢使用 shell_exec 运行(类似于 sudo/ssh 在使用 shell_exec 运行时警告需要 tyy)::

gpg: gpg-agent is not available in this session

如果你直接从 shell 提示符运行它会发生什么?

另外,请确保您未处于安全模式:

shell_exec() (相当于反引号的功能) 当 PHP 在安全模式下运行时,该函数被禁用。

检查phpinfo()


检查该功能是否未被禁用:

$ grep 'disable_functions' /etc/php.ini

编辑:

此外,尝试使用 putenv 将 GNUPGHOME 指向您的 .gnupg 文件夹。

可能是 php 脚本以 httpd 用户身份运行,而 gpg 期待您网站的“用户”用户。

于 2011-09-21T21:26:04.793 回答
0

我遇到了从 cron 调用 gpg 的类似问题。从命令行或 shell 脚本运行时,该命令可以正常工作。从 cron 运行命令失败,并出现与您遇到的相同错误。我发现的两个资源是一个很好的 gpg cheetsheet这个关于 serverfault 的答案

生成 gpg 密钥后,我能够让它工作。

gpg --gen-key

然后加密:

gpg -e -r name@domain.tld backup_file.tgz
于 2015-06-12T01:31:32.860 回答