Web服务器中的PHP GnuPG SEGFULTS
灵感来源于帮助@ 在CLI中运行时,我能够使用第三方公钥对字符串进行GnuPG加密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) 系统日
- 将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