Сжатая строка не является безопасной в 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"));'
(пример для чтения со стандартного ввода взят из здесь )