macos — проблема с использованием gnupg из PHP (сбой Apache, CLI OK)

Я использую MAMP 2.2, PHP 5.3.5, на OSX 10.8.5. Недавно установил gpgme, gnupg. Пришлось работать с вещами, чтобы получить и загрузить зависимости, но поверить, что все установлено нормально. Также установлен GPGTools.

Я написал два довольно простых сценария PHP, один из которых будет импортировать открытый ключ, сгенерированный в другом месте, а другой — список ключей в связке ключей. Расположение ключей — /Users/myuser/.gnupg

MAMP Apache настроен для работы от имени меня (myuser). Когда я выполняю любой из моих сценариев с использованием PHP CLI, тогда все работает нормально и работает как положено. Когда я выполняю в Apache, они запускаются, значения var_dumped & echo бы все выглядело правильно, но gnupg-> import () будет просто регистрировать «импорт не удался», а gnupg-> keyinfo () говорит «не удалось инициировать список ключей».

Я попытался установить разрешения как можно более широко открытыми для .gnupg dir и содержимого; неудачно.

Код для перечисления ключей:

<?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();

}

Я что-то упускаю из виду?

2

Решение

Проблема здесь в том, что apache использует другого пользователя (для ubuntu это www-data, но я не уверен насчет OSX), а папка .gnupg доступна только владельцу (chmod 600). Вот почему cli работает (потому что вы вошли как владелец), а apache — нет (потому что пользователь apache не является владельцем каталога .gnupg).

Пожалуйста, установите папку / home для пользователя apache, а затем сгенерируйте свою собственную пару ключей gnupg. Если apache является владельцем собственных ключей, и вы указываете на папку apache при установке переменной env GNUPGHOME, она будет работать нормально.

0

Другие решения

Других решений пока нет …