麻烦使用PHP的gnupg(Apache失败,CLI OK)

问题描述 投票:2回答:1

我在OSX 10.8.5上使用MAMP 2.2,PHP 5.3.5。最近设置gpgme,gnupg。不得不通过事情来下载和构建依赖项,但相信一切都安装得很好。还安装了GPGTools。

我写了两个相当简单的PHP脚本,一个用于导入在别处生成的公钥,另一个用于列出密钥环中的密钥。密钥环位置是/Users/myuser/.gnupg

MAMP Apache配置为以我的身份运行(myuser)。当我使用PHP CLI执行我的任一个脚本时,运行正常并按预期工作。当我在Apache中执行时,它们运行,值var_dumped和echo都看起来正确,但是gnupg-> import()只会记录'import failed',而gnupg-> keyinfo()表示'无法初始化密钥列表'。

我已经尝试在.gnupg目录和内容上尽可能广泛地设置权限;没运气。

列出键的代码:

<?php

error_reporting(-1);
// set path to keyring directory
putenv('GNUPGHOME=/Users/myuser/.gnupg');
var_dump(getenv('GNUPGHOME'));
echo exec('whoami');
echo is_dir('/Users/myuser/.gnupg');
echo '<br/>';
$gpg = new gnupg();
$gpg->seterrormode(GNUPG_ERROR_WARNING);

try {

    $info = $gpg->keyinfo('');
    print_r($info);

} catch (Exception $e) {

    echo 'ERROR: ' . $e->getMessage();

}

我错过了一些明显的东西吗

php macos apache mamp gnupg
1个回答
0
投票

这里的问题是apache使用不同的用户(对于ubuntu它是www-data,但我不确定OSX)并且.gnupg文件夹只能由所有者访问(chmod 600)。这就是cli工作的原因(因为你以所有者身份登录)而apache没有(因为apache用户不是.gnupg目录的所有者)。

请为apache用户设置/ home文件夹,然后生成自己的一对gnupg密钥。一旦apache成为其自己的密钥的所有者,并且在设置GNUPGHOME env变量时指向apache的文件夹,它将正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.