php - 从 PHP 使用 gnupg 时出现问题(Apache 失败,CLI OK)

标签 php macos apache mamp gnupg

我在 OSX 10.8.5 上使用 MAMP 2.2、PHP 5.3.5。最近设置gpgme,gnupg。必须解决问题才能下载和构建依赖项,但相信一切都已安装好。还安装了 GPGTools。

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

MAMP Apache 配置为以我 (myuser) 身份运行。当我使用 PHP CLI 执行我的任一脚本时,运行正常并按预期工作。当我在 Apache 中执行时,它们会运行,值 var_dumped & echo'd 看起来都正确,但 gnupg->import() 只会记录“导入失败”,gnupg->keyinfo() 说“无法初始化 key 列表”。

我已经尝试在 .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();

}

我是否漏掉了一些明显的东西?

最佳答案

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

请为 apache 用户设置/home 文件夹,然后生成它自己的一对 gnupg key 。一旦 apache 拥有自己的 key ,并且您在设置 GNUPGHOME 环境变量时指向 apache 的文件夹,它就会正常工作。

关于php - 从 PHP 使用 gnupg 时出现问题(Apache 失败,CLI OK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329486/

相关文章:

mysql - 选择 SQL 中最常见的项目

php - 如何在没有 suhosin 的情况下使用 PHP7 服务器保护 CentOS?

php - laravel View 助手中的::(解析范围运算符) 是什么?

php - domxml 解析 XML 文件时出错

mysql - OSX dyld : lazy symbol binding failed: Symbol not found: _mysql_get_client_info

cocoa - StatusBar 项目的弹出窗口

c++ - Macports GCC 4.8 无法链接 OSX Lion 上的 c++ 库

java - 是否可以使用java中的apache tika从excel表(从列或行)中获取特定数据?

php - 正则表达式求反数

apache - .htaccess 强制使用 SSL 并删除文件扩展名