在PHP中,使用gpupg\u解密永远不会完成
我正在使用pecl的gnupg PHP模块。明确地: gpgme-devel 1.1.8 gnupg模块1.3.3 加密工作正常,而且速度很快。在命令行使用gpg解密速度很快。当我尝试从PHP解密时,页面从未加载,甚至在调用解密之前的消息也不会打印在PHP中,使用gpupg\u解密永远不会完成,php,encryption,gnupg,gpgme,Php,Encryption,Gnupg,Gpgme,我正在使用pecl的gnupg PHP模块。明确地: gpgme-devel 1.1.8 gnupg模块1.3.3 加密工作正常,而且速度很快。在命令行使用gpg解密速度很快。当我尝试从PHP解密时,页面从未加载,甚至在调用解密之前的消息也不会打印 <?php error_reporting(E_ALL); ini_set('display_errors', 1); putenv('GNUPGHOME=/var/www/.gnupg/'); $gpg = new gnupg(); $gpg
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
putenv('GNUPGHOME=/var/www/.gnupg/');
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
$key_finger_print = 'XXXX'; // Censored for posting...
$phrase = 'XXXX'; // Censored for posting...
$message = 'XXX'; // Censored for posting...
try
{
$gpg->adddecryptkey($key_finger_print,$phrase);
$message = $gpg->decrypt($message)
}
catch(Exception $e)
{
echo 'ERROR: ' . $e->getMessage();
}
?>
日志中未显示或显示任何错误
Edit:因此,从命令行而不是通过apache运行相同的脚本会导致gpg代理提示我输入密码短语,即使它是在库调用中提供的。我假设您没有从web服务器获得任何东西。您是否检查过gnupg是否加载在web服务器的php.ini中,而不仅仅是加载在CLI中。。。。使用cli,它会提示我输入密码短语,即使它已提供给库。这表明密码错误。重新确认它是正确的(并确保没有从PDF文档或类似文件中复制任何奇怪的字符)。如果您使用的是非ASCII字符(因此所有ASCII代码最多为128),请查看文件的编码,可能GnuPG接口在这里弄乱了一些东西。想法不错,但我相信它是正确的密码。此外,如果密码短语不正确,库应该抛出异常。密码短语在所有ASCII中都有,尽管将传递的密码短语更改为“我知道是错误的”会显示相同的行为。也许我必须生成一个没有密码短语的密钥?现在试试看…好吧,没有通行证它就行了。我更喜欢一个通行短语,所以我会留下这个空白;但至少我可以进入项目的下一部分。