gzip кодирует / выдает STRING в bash, затем декодирует / раздувает STRING в php - PullRequest
1 голос
/ 30 января 2020

I w sh для создания gring в bash, а затем отправить его в скрипт php для декодирования / надувания. Но я столкнулся с проблемой, я думаю, со строкой gzip, созданной gzip в bash.

Я подозреваю, что проблема может быть в формате bash gzip.
Но я не вижу вариантов, которые могли бы исправить это.

Все мысли оценены.

1 Ответ

1 голос
/ 30 января 2020

Сжатая строка не является безопасной в bash строке, если я запускаю

FOO="$(echo "Hello world" | gzip -c | base64)"
FOO="$(echo "$FOO" | base64 -d)"

Я получаю ошибку

-bash: warning: command substitution: ignored null byte in input

Но это работает, если я оставляю строку base64 кодируется так, используя base64_decode () / gzdecode () :

FOO="$(echo "Hello world" | gzip -c | base64)"
php -r "echo gzdecode(base64_decode('$FOO'));"

Вывод:

Hello world

Это также работает если вы перенаправите вывод декодированной строки на PHP:

FOO="$(echo "Hello world" | gzip -c | base64)"
echo "$FOO" | base64 -d | php -r 'echo gzdecode(file_get_contents("php://stdin"));'

(пример для чтения со стандартного ввода взят из здесь )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...