Зашифровать файл с помощью GPG с помощью exec () - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь зашифровать файл с помощью GPG через exec (). Файл, который я хочу зашифровать, создается перед запуском этой команды.

$fesha = date("mdY");
$file_name = "FILE_$fesha.txt";
$myfile = fopen($file_name, "w");
//MySQL query
fwrite($myfile, $txt);
fclose($myfile);

$password = "*password*";
$commando = "gpg --encrypt --passphrase=\"$password\" --armor --batch --yes --trust-model always -r **email@public.key** \"$file_name\"";
echo  shell_exec($commando);
echo $commando;

Я запускаю скрипт PHP при просмотре папки «output», текстовый файл создается без проблем, но файл asc никогда не создается.

Если я запускаю вручнуювывод из файла PHP (фактическая команда GPG) зашифрованный файл создается без каких-либо проблем или сообщений об ошибках.

Я пытался решить эту проблему в течение нескольких часов.

Iпопытался использовать подход класса ( $ gpg = new gnupg (); ), но мне не удалось установить все модули / расширения PECL.

Любая помощьс благодарностью.

1 Ответ

0 голосов
/ 22 октября 2019

После долгих часов исследований, проб и ошибок с большим количеством параметров команды, пытаясь с разрешениями на стороне сервера, попытался добавить пользователя www-data в область admin, изменив разрешения для / home / www-data /. Папки gnupg и /home/mainuser/.gnupg ...

Я сделал что-то "тупое" и отправил эту команду ( $ commando = "gpg --gen-key"; ) чтобы узнать, смогу ли я сгенерировать секретный ключ с помощью сценария PHP, потому что я вроде как выяснил, что это связано с разрешениями на этом этапе, и я не смог войти в систему как www-данные в терминал.

Очевидно, что я не получил интерактивного ответа, но я думаю, он просто создал пустой ключ или что-то, потому что после того, как я снова попробовал исходную команду:

$ commando = "gpg -encrypt --passphrase = \ "$ password \" --armor --batch --yes --trust-модель всегда -r email@public.key \ "$ file_name \" ";

Это действительно сработало! Сервер создал текстовый файл и зашифрованный файл.

Итак, я не хочу верить в эту глупую вещь (" gpg --gen-key ")на самом деле «разгадал тайну», я хочу верить, что это была комбинация всего, что я сделал.

На всякий случай, если у кого-то еще возникла эта проблема, я нашел эти статьи действительно полезными.

Использование GPG (GnuPG с PHP на сервере .

gpg: ПРЕДУПРЕЖДЕНИЕ: небезопасное владение homedir /home/user/.gnupg

Чтоправильные разрешения для вложенной папки .gnupg?

...