嗨我使用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
答案 0 :(得分:1)
此错误使得commaand似乎不喜欢使用shell_exec运行(类似于sudo / ssh在使用shell_exec运行时警告需要使用tyy)::
gpg: gpg-agent is not available in this session
如果直接从shell提示符运行它会发生什么?
另外,请确保您不处于安全模式:
shell_exec()(功能相当于反引号) 当PHP以安全模式运行时,此功能被禁用。
检查该功能是否未被禁用:
$ grep 'disable_functions' /etc/php.ini
修改强>
另外,尝试使用putenv将GNUPGHOME指向您的.gnupg文件夹。
可能是php脚本以httpd用户身份运行,而gpg期待您网站的“用户”用户。
答案 1 :(得分:0)
我遇到了一个类似的问题,从cron调用gpg。 从命令行或shell脚本运行时,该命令正常工作。从cron运行命令失败,并且遇到了相同的错误。 我找到的两个资源是一个很好的gpg cheetsheet 并this answer on serverfault
生成gpg密钥后,我能够让它工作。
gpg --gen-key
然后加密:
gpg -e -r name@domain.tld backup_file.tgz