灵感来自http://devzone.zend.com/1278/using-gnupg-with-php/并在@PHP ASCII Armored PGP 加密字符串的帮助下
在 CLI 中运行时,我能够使用第 3 方公钥对字符串进行 GnuPG 加密。
- 将 GNUPGHOME 设置为世界可读的位置
- chmod 密钥环文件到 666
- cli php 加密字符串就好了
PHP 5.2.10 (cli) (built: Nov 13 2009 11:44:05)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
但...
当通过网络服务器(CentOS 上的 Apache)调用运行相同脚本的addencryptkey时,我得到“退出信号分段错误 (11)” 。
apache错误日志
[notice] child pid 30682 exit signal Segmentation fault (11)
syslog 中没有任何价值...
任何指针?谢谢!
代码(没有什么惊天动地的):
// GnuPG code
putenv("GNUPGHOME=/opt/.gnupg/");
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
$gpg -> setarmor(1);
try
{
$info = $gpg -> addencryptkey("KEY");
var_dump($info);
$enc = $gpg -> encrypt($token);
var_dump($enc);
}
catch (Exception $e) {
echo 'ERROR: ' . $e->getMessage();
}
drwxr-xr-x 2 root root 4096 Jan 14 11:29 .gnupg
[root@dev-lamp01 opt]# ll .gnupg/
total 28
-rw-rw-rw- 1 root root 9224 Jan 14 10:23 gpg.conf
-rw-rw-rw- 1 root root 325 Jan 14 10:25 pubring.gpg
-rw-rw-rw- 1 root root 0 Jan 14 10:20 pubring.gpg~
-rw-rw-rw- 1 root root 600 Jan 14 11:29 random_seed
-rw-rw-rw- 1 root root 0 Jan 14 10:20 secring.gpg
-rw-rw-rw- 1 root root 1200 Jan 14 10:25 trustdb.gpg