在LINUX中给出错误的gpg解密“无法在批处理模式下查询密码短语”

时间:2011-09-21 21:14:19

标签: linux gnupg encryption passphrase

嗨我使用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

2 个答案:

答案 0 :(得分:1)

此错误使得commaand似乎不喜欢使用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期待您网站的“用户”用户。

答案 1 :(得分:0)

我遇到了一个类似的问题,从cron调用gpg。 从命令行或shell脚本运行时,该命令正常工作。从cron运行命令失败,并且遇到了相同的错误。 我找到的两个资源是一个很好的gpg cheetsheetthis answer on serverfault

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

gpg --gen-key

然后加密:

gpg -e -r name@domain.tld backup_file.tgz