Проблема с вызовом GnuPG из php-скрипта

  • Автор темы Philosopher
  • Дата начала

Philosopher

Guest
Проблема с вызовом GnuPG из php-скрипта

Задача: сгенерировать электронную подпись для файла (текстовый или бинарный), используя GnuPG. Вызываться GnuPG должна из php-скрипта. При запуске из командной строки GnuPG в интерактивном режиме запрашивает пароль на ключ. Читая мануал, написал следующий код:
PHP:
$recipient = ...
$path = ...

$commands[0] =  "c:/gnupg/gpg --recipient $recipient -ba $path/in.file"; 

$process = proc_open($commands[0], $descriptorspec, $pipes);
if (is_resource($process)) {

    fwrite($pipes[0], "password");
    fwrite($pipes[0], "\n");
    fclose($pipes[0]);
 
    while (!feof($pipes[1])) {
         echo fgets($pipes[1], 4096);
    }
    fclose($pipes[1]);
    $return_value = proc_close($process);
}
При запуске процесс зависает. В чем ошибка?
Отлаживаюсь под Win2000. Apache 1.38. PHP 4.3.6. GnuPG 1.2.5
 

slach

Новичок
в мануале комментарии есть еще
внизу...на http://www.php.net/manual/en/function.proc-open.php

попробуй после записи в пайп... сделать fflush($pipes[0]);

кроме того... попробуй не закрывать пайпы... раньше времени
а только после того как проделал с процессом все что надо

попробуй присобачить пароль к gnupg через параметры коммандной строки (я правда не знаю можно ли так делать)
 
Сверху