Сбой шифрования gpg: ошибка открытия файла - PullRequest
1 голос
/ 19 июля 2011

Я схожу с ума с этим ..

У меня установлен gnupg на моем сервере CentOS, и я пытаюсь зашифровать загруженные файлы (загруженные через страницу PHP).На сервере через командную строку работает отлично.Но с помощью сценария php происходит сбой с этой ошибкой:

gpg: /path-to-my-file/my-file: encryption failed: file open error

Пользователь apache (который, я думаю, используется для запуска команды exec) имеет права на чтение / запись в каталоге файла.

Файл загружен нормально (я вижу его позже, когда я удалил удаление незашифрованного файла из моего кода) и может быть корректно удален через сайт php.это следующее

/path-to-gpg/gpg --homedir=/path-to-my-home-gnupg/.gnupg -e -r therecipient@email the-unencrypted-file

Есть идеи, как я мог бы заняться этим?спасибо

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Несколько вещей для проверки:

  • Запустите system("ls " . escapeshellarg($file)) и проверьте результат - файл не найден? Доступ запрещен? Это поможет вам отладить.
  • Запустите system("whoami"), чтобы убедиться, что PHP работает так, как вы думаете.
  • Запустите echo "<pre>ls " . escapeshellarg($file) . "</pre>", затем скопируйте + вставьте команду и запустите ее из оболочки, чтобы убедиться, что путь к файлу соответствует ожидаемому.

Кроме того, я считаю, что CentOS запускает SELinux по умолчанию ... Если он установлен, проверьте журналы (в /var/log/), чтобы убедиться, что SELinux не позволяет Apache выполнять GPG.

0 голосов
/ 19 июля 2011

Попробуйте запустить команду с действительными правами пользователя apache в подробном режиме:

su apache -c /path-to-gpg/gpg -vv ...
...