Os códigos GPF amplamente usados são de três tipos:
- 0 é sucesso (todos os outros valores indicam uma falha).
- 2 é normalmente usado para erros inesperados.
- 1 para coisas como uma assinatura BAD.
A maneira correta de identificar um erro é interpretando a saída de --status-fd.
Agora, para a pergunta específica que você está usando, pode haver dois motivos:
- O GPG está perguntando se você deseja continuar com a criptografia usando uma chave não assinada. Como nenhum usuário pode inserir Y, ele produz um erro.
Para corrigir isso, forneça as seguintes opções:
--yes and --always-trust
- Também pode ser um problema de permissão. O gpg está tentando acessar um diretório ao qual ele não pode ter acesso, por isso ele falha com um erro fatal. (código de erro 2)
Você pode consertar isso especificando uma diretiva homedir com um diretório gravável por gpg. Assim:
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile --homedir /path/to/dir";
Informações do man gpg:
--homedir directory
Set the name of the home directory to directory
If this option is not used it defaults to "~/.gnupg". It does not make sense to use this in a options file. This also overrides the environment variable $GNUPGHOME.
Você também pode usar este link para saber mais sobre este.
Espero que isso ajude você.