Использовать proc_open , что позволяет создавать пользовательский канал для подачи данных (пароль пользователя) при появлении запроса. См. Комментарии по ссылке, чтобы узнать, как создать собственный канал пароля.
Обновление, поскольку вы не можете читать.
Фрагмент из комментария снежного барса в забавной точке NOSPAMPLEASE dot com dot au в 05-Jun-2008 02:46 по ранее дважды упомянутой ссылке. Вам просто нужно применить это к вашей собственной ситуации.
// Set up the descriptors
$Descriptors = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w"),
3 => array("pipe", "r") // This is the pipe we can feed the password into
);
// Build the command line and start the process
$CommandLine = $GPGPath . ' --homedir ' . $HomeDir . ' --quiet --batch --local-user "' . $Identity . '" --passphrase-fd 3 --decrypt -';
$ProcessHandle = proc_open( $CommandLine, $Descriptors, $Pipes);
if(is_resource($ProcessHandle)) {
// Push passphrase to custom pipe
fwrite($Pipes[3], $PassPhrase);
fclose($Pipes[3]);