Расшифровка gpg дает ошибку в LINUX "не может запросить фразу-пароль в пакетном режиме" - PullRequest
2 голосов
/ 22 сентября 2011

Привет, я использую 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 ]

1 голос
/ 22 сентября 2011

Эта ошибка создает впечатление, что запятая не любит запускаться с использованием shell_exec (аналогично тому, как sudo / ssh предупреждает о необходимости tyy при запуске с shell_exec) ::

gpg: gpg-agent is not available in this session

Что происходит, если вызапустить его непосредственно из командной строки?

Кроме того, убедитесь, что вы не в безопасном режиме:

shell_exec () (функциональный эквивалент backticks) Эта функция отключена, когда PHP работаетв безопасном режиме.

Проверьте с помощью phpinfo ()


убедитесь, что функция не отключена:

$ grep 'disable_functions' /etc/php.ini

Редактировать:

Кроме того, попробуйте с помощью putenv указать GNUPGHOME на папку .gnupg.

Возможно, скрипт php запускается как httpdпользователь и gpg ожидают пользователя 'user' для вашего сайта.

0 голосов
/ 12 июня 2015

Я столкнулся с подобной проблемой, вызвав gpg из cron. Команда отлично работает при запуске из командной строки или из сценария оболочки. Запуск команды из cron завершается с ошибками, которые вы получаете. Два ресурса, которые я нашел, были хорошим gpg cheetsheet И этот ответ на serverfault

Мне удалось заставить его работать после генерации ключа gpg.

gpg --gen-key

А затем зашифровать с помощью:

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