【发布时间】:2014-04-27 19:09:58
【问题描述】:
我对使用 GNUPG 完全陌生。我已经使用 YUM 和 WHM 的内置模块安装程序在服务器上成功安装了它。
我正在尝试导入一个密钥,然后使用它来加密一个文件,该文件将在每晚通过 SFTP 传输到其他人的服务器。我遵循了有关设置代码的教程,但无法超越这一点。我并没有真正找到任何有用的解释来解释为什么事情不会像描述的那样工作。我已经关注了在这个问题中找到的信息:Encrypt files using PGP in PHP?。不幸的是,编写信息的人认为它会在第一次正常工作。我还发现了其他有用的页面,例如 http://devzone.zend.com/1278/using-gnupg-with-php/,不幸的是也没有提供错误信息。
首先,让我说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";
}
我回来了:
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
(
)
)
)
我假设我最大的问题只是GNUPGHOME,但不能老实说。我希望有更多关于这方面的信息。如果有人可以提供帮助,我将不胜感激。
谢谢, 詹姆斯
【问题讨论】: