Web服务器中的PHP GnuPG SEGFULTS

Web服务器中的PHP GnuPG SEGFULTS,php,gnupg,Php,Gnupg,灵感来源于帮助@ 在CLI中运行时,我能够使用第三方公钥对字符串进行GnuPG加密 将GNUPGHOME设置为世界可读位置 chmod keyring文件到666 cli php可以很好地加密字符串 但是 当通过Web服务器(CentOS上的Apache)调用addencryptkey运行相同的脚本时,我得到了“退出信号分段错误(11)” apache错误日志 [notice] child pid 30682 exit signal Segmentation fault (11) 系统日

灵感来源于帮助@

在CLI中运行时,我能够使用第三方公钥对字符串进行GnuPG加密

  • 将GNUPGHOME设置为世界可读位置
  • chmod keyring文件到666
  • cli php可以很好地加密字符串

但是

当通过Web服务器(CentOS上的Apache)调用addencryptkey运行相同的脚本时,我得到了“退出信号分段错误(11)”

apache错误日志

[notice] child pid 30682 exit signal Segmentation fault (11)
系统日志中没有任何有价值的内容

有什么建议吗?谢谢


代码(没有什么惊天动地的):



哦,好吧,是我的错,就在我这么做的时候

chmod -R 777 
在我的GNUPGHOME上——一切都成功了


虽然它对666很满意(CLI对rw也很满意)

不提供不需要的权限。确定你的
$GNUPGHOME
是666?您无法打开您没有执行权限的文件夹,所以它必须是允许您打开它的权限,而不是您的Web服务器。考虑将所有权更改为您正在处理的用户(让我们讨论以root用户身份工作或不在其他地方工作),并将文件的组更改为www数据(或您的apache用户所在的任何组),因此不能将其设置为世界可写。对于里面的文件,你应该能够在每个文件上设置权限-1(如果没有文件夹),因为它们都不会被执行,所以你也不需要
-R
。顺便说一句,这个问题很好,我可能对答案没有任何线索仍在与权限抗争——gnupg拒绝使用任何低于777的东西。不要放弃你-谢谢!执行
ls-l$GNUPGHOME
ps ax | grep apached
(前提是您使用的是apache)。显示哪些用户/组?
// 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
chmod -R 777