Я использую PHP-модуль gnupg из pecl. В частности: модуль gpgme-devel 1.1.8 gnupg 1.3.3
Шифрование работает нормально и быстро. Использование gpg для расшифровки командной строки выполняется быстро. Когда я пытаюсь расшифровать с PHP, страница никогда не загружается, даже сообщения перед вызовом расшифровки не печатаются.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
putenv('GNUPGHOME=/var/www/.gnupg/');
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
$key_finger_print = 'XXXX'; // Censored for posting...
$phrase = 'XXXX'; // Censored for posting...
$message = 'XXX'; // Censored for posting...
try
{
$gpg->adddecryptkey($key_finger_print,$phrase);
$message = $gpg->decrypt($message)
}
catch(Exception $e)
{
echo 'ERROR: ' . $e->getMessage();
}
?>
Ошибки не отображаются и не отображаются в журнале.
Редактировать: Таким образом, запуск того же скрипта из командной строки, а не через apache, заставляет gpg-agent запрашивать у меня фразу-пароль, даже если она была предоставлена в вызове библиотеки.
echo $gpg->geterror();
после добавления ключа расшифровки и посмотрите, что говорится в сообщении. Когда вы пытались использовать ключ gpg от имени того же пользователя, под которым запускается php-скрипт с веб-сервером? Возможно, gpg нужно--init
'd - person Tim Groeneveld   schedule 14.05.2014