PHP GNUPG:无法导入密钥

PHP GNUPG:无法导入密钥,php,import,gnupg,Php,Import,Gnupg,我对使用GNUPG是完全陌生的。我已经使用YUM和WHM的内置模块安装程序在服务器上成功安装了它 我正在尝试导入一个密钥,然后使用它加密一个文件,该文件将在夜间发送到其他人的服务器。我已经学习了一些关于设置代码的教程,但是还不能超过这一点。我真的没有找到任何有用的解释来解释为什么事情不能像描述的那样工作。我已跟踪此问题中找到的信息:。不幸的是,写信息的人认为它第一次就能正常工作。我还发现了其他有用的页面,例如,不幸的是,这些页面也没有提供错误信息 首先,让我说GNUPGHOME路径不正确。实际上

我对使用GNUPG是完全陌生的。我已经使用YUM和WHM的内置模块安装程序在服务器上成功安装了它

我正在尝试导入一个密钥,然后使用它加密一个文件,该文件将在夜间发送到其他人的服务器。我已经学习了一些关于设置代码的教程,但是还不能超过这一点。我真的没有找到任何有用的解释来解释为什么事情不能像描述的那样工作。我已跟踪此问题中找到的信息:。不幸的是,写信息的人认为它第一次就能正常工作。我还发现了其他有用的页面,例如,不幸的是,这些页面也没有提供错误信息

首先,让我说
GNUPGHOME
路径不正确。实际上,我不确定在我刚刚完成的安装中应该指向哪里,我刚刚将文件从另一个帐户目录复制到了这个目录。我找不到有关如何正确设置的信息,希望我能够将新密钥导入这些文件并使用它们而不会出现问题。我目前使用的代码是:

putenv("GNUPGHOME=/home/smlivere/public_html/tmp/.gnupg");

echo "GetEnv: ".getenv("GNUPGHOME")."<br/><br/>";
echo "Is Dir: ".is_dir(getenv("GNUPGHOME"))."<br/><br/>";

$pubkey = "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (MingW32)

[public key data]
-----END PGP PUBLIC KEY BLOCK-----";

$enc = (null);


// create new GnuPG object
$gpg = new gnupg();

// throw exception if error occurs
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);

try {
    $info = $gpg->import($pubkey);
    echo "gnupg_import RTV = <br/><pre>\n";
    var_dump($rtv);
    echo gnupg_geterror($res);
    echo "</pre>\n";
} catch (Exception $e) {
    echo 'ERROR: ' . $e->getMessage()."<br/>";
    echo "The exception code is: " . $e->getCode()."<br/>";
    echo "The exception was created on line: " . $e->getLine()."<br/>";

    echo "Stack Trace:<br/><pre>\n";
    print_r($e->getTrace());
    echo "</pre>\n";
}
我假设我最大的问题只是
GNUPGHOME
,但不能诚实地说。我希望有更多关于这方面的信息。如果有人能帮忙,我将不胜感激

谢谢,
James

我终于通过这门课实现了这一点:

不过,消息加密在默认情况下不起作用。我必须使用以下方法更改它以使其正常工作:

其中,
$message
是要加密的消息,
$gpg
是gpg二进制文件的路径,
$recp
是用于存储密钥的用户名


上面的命令在使用shell_exec()执行时也会自动运行,但我使用了该类来导入我的密钥,并认为我可以保留它。

如果您在本地计算机上使用php fpm,请检查配置文件(/usr/local/etc/php/7.3/php fpm.conf),查看“daemonize”是否设置为否,如果设置为否,请将其更改为是,然后重新启动php,这就是我花了一整天的时间试图弄明白它的原因

我试图使用这个包,但是它没有使用。:Gen Key:函数返回任何键给我。知道为什么吗?没有记录任何错误日志。或者你有别的选择吗?
GetEnv: /home/smlivere/public_html/tmp/.gnupg

Is Dir: 1

ERROR: import failed
The exception code is: 0
The exception was created on line: 147
Stack Trace:

Array
(
    [0] => Array
        (
            [file] => /home/smlivere/public_html/crons/export_dvm.php
            [line] => 147
            [function] => import
            [class] => gnupg
            [type] => ->
            [args] => Array
                (
                    [0] => -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (MingW32)

[public key data]
-----END PGP PUBLIC KEY BLOCK-----
                )

        )

    [1] => Array
        (
            [file] => /home/smlivere/public_html/crons/export_dvm.php
            [line] => 5
            [function] => encrypt_file
            [args] => Array
                (
                )
        )
)
'gpg --no-tty --no-secmem-warning --homedir '.$_SERVER['DOCUMENT_ROOT'].'/tmp/.gnupg -e -a --yes --always-trust --batch --output [output path] -r [key id] [source path]'