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

このエラーは、commaand が shell_exec を使用して実行されることを好まないように見えます (shell_exec で実行する場合に sudo/ssh が tyy の必要性について警告する方法と同様)::

gpg: gpg-agent is not available in this session

シェルプロンプトから直接実行するとどうなりますか?

また、セーフモードでないことを確認してください:

shell_exec() (バッククォートと同等の機能) PHP がセーフ モードで実行されている場合、この関数は無効になります。

phpinfo()で確認


機能が無効になっていないことを確認します。

$ grep 'disable_functions' /etc/php.ini

編集:

また、putenv を使用して、GNUPGHOME が .gnupg フォルダーを指すようにしてください。

php スクリプトが httpd ユーザーとして実行されており、gpg がサイトの「ユーザー」ユーザーを想定している可能性があります。

于 2011-09-21T21:26:04.793 に答える