Как это возможно, что флаг GPG «--import» вызывает вывод на терминал, но все еще не возвращается строка в shell_exec ()? - PullRequest
0 голосов
/ 21 октября 2019

Нечто очень странное происходит. Я разобрал мою проблему на этот минимальный пример:

var_dump(shell_exec(escapeshellarg('C:\Program Files (x86)\GnuPG\bin\gpg.exe') . ' --version'));
var_dump(shell_exec(escapeshellarg('C:\Program Files (x86)\GnuPG\bin\gpg.exe') . ' --import ' . escapeshellarg('input.txt')));

Ожидаемый ожидаемый будет представлять собой две строки var_dump (). Вместо этого только команда first приводит к строке вывода, тогда как последняя превращается в NULL !

В обоих случаяхявляется фактическим выводом на консоль (conhost.exe), который shell_exec должен захватывать как строку, но только для первой команды.

Как это технически возможно? Вывод NULL из команды --import, хотя --version выводит строку, как и ожидалось, как и любая другая терминальная программа в истории компьютеров.

Что происходит, что заставляет GPG игнорировать всю логику и установленные правилапутем вывода данных, которые все еще каким-то образом не обнаруживаются в shell_exec?

В отчаянии я пробовал все виды вещей, связанных с --output и использованием «-» и «stdout» и всех видов значений, но этоне имеет никакого влиянияТакже не имеет значения, существует ли файл input.txt или является допустимым блоком ключей. Проблема, в частности, заключается в том, что выходные данные не фиксируются, и я не понимаю, как это происходит или как заставить его перестать происходить.

...