В результате GPG всегда возвращает 2. Мой код выглядит следующим образом
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile";
Где outfile – файл, в котором зашифрованные данные будут записаны, а infile – незашифрованные данные.
Я не знаю, почему это происходит. Может кто-нибудь, пожалуйста, скажите мне, что случилось. Благодарю.
GPG спрашивает, хотите ли вы продолжить шифрование с помощью неподписанного ключа. Поскольку пользователь не может вводить Y
он выдает ошибку.
Чтобы исправить это, установите следующие переключатели
--yes
и – --always-trust
См. Это сообщение: http://lists.gnupg.org/pipermail/gnupg-users/2008-January/032410.html
Это проблема разрешения. gpg пытается получить доступ к каталогу, к которому у него нет доступа, поэтому он терпит неудачу с фатальной ошибкой. (код ошибки 2)
Вы можете исправить это, указав директиву homedir с каталогом, записываемым gpg. Как это:
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile --homedir /path/to/dir";
Информация от man gpg
:
–homedir каталог
Задайте имя домашнего каталога в каталогЕсли этот параметр не используется, он по умолчанию имеет значение «~ / .gnupg». Не имеет смысла использовать это в файле опций. Это также переопределяет переменную среды $ GNUPGHOME.
Вы также можете захотеть добавить ключ к списку доверенных ключей:
gpg.exe --edit-key KEY_NAME trust 5 (level of trust) Y Save
У меня возникли проблемы с параметром --always-trust
не работает должным образом в окнах XP, это помогло мне решить проблему.
У меня была та же проблема, но для команды декодирования
Сначала и вообще вы можете получить сообщение об ошибке, перенаправляя stderr на stdout.
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile 2>&1";
Затем вы можете изменить параметры gpg в соответствии с вашими потребностями. Поскольку у меня были файлы, зашифрованные с помощью ключа с фразой, мне пришлось добавить несколько параметров.
Я начал с
gpg -o $out -d $path
Но он жаловался, что он не может открыть tty, а затем –no-tty выводит некоторые другие ошибки, и, наконец, команда для декодирования файлов с ключом с фразой pass
gpg --batch --passphrase $pass_phrase --no-tty -o $outfile -d $path_to_encoded_file
Я надеюсь, что это помогает кому-то.