gzip encode/deflate bash 中的字符串,然后 php 中的 decode/inflate 字符串
gzip encode/deflate STRING in bash, then decode/inflate STRING in php
我希望在 bash 中生成压缩后的字符串,然后将其发送到 decoding/inflating 的 php 脚本。但是我遇到了一个问题,我认为 gzip 在 bash.
中生成的 gzip 字符串
# from
#
FOO="$(echo "Hello world" | gzip -c | base64)" # compressed, base64 encoded data
echo $FOO | base64 -d | gunzip # use base64 decoded, uncompressed data
echo '--'
# unpack base64 again before sending to php
FOO="$(echo $FOO | base64 -d)"
# this is where it goes wrong:
# php doesn't seem to like the gzip string format.
# gzuncompress produces:
# PHP Warning: gzuncompress(): data error in Command line code on line 1
php -r "echo gzuncompress('$FOO') . \"\n\";"
echo '--'
# gzdecode produces:
# PHP Warning: gzdecode(): data error in Command line code on line 1
php -r "echo gzdecode('$FOO') . \"\n\";"
echo '--'
# gzinflate produces:
# PHP Warning: gzinflate(): data error in Command line code on line 1
php -r "echo gzinflate('$FOO') . \"\n\";"
echo '--'
我怀疑问题可能出在 bash gzip 格式上。
但我看不到任何可能纠正此问题的选项。
感谢所有想法。
gzip 字符串在 bash 字符串中不安全,如果我 运行
FOO="$(echo "Hello world" | gzip -c | base64)"
FOO="$(echo "$FOO" | base64 -d)"
我收到一个错误
-bash: warning: command substitution: ignored null byte in input
但如果我使用 base64_decode() / gzdecode():
保留字符串 base64 编码,它会起作用
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"));'
(从 here 中读取的标准输入示例)
我希望在 bash 中生成压缩后的字符串,然后将其发送到 decoding/inflating 的 php 脚本。但是我遇到了一个问题,我认为 gzip 在 bash.
中生成的 gzip 字符串 # from
#
FOO="$(echo "Hello world" | gzip -c | base64)" # compressed, base64 encoded data
echo $FOO | base64 -d | gunzip # use base64 decoded, uncompressed data
echo '--'
# unpack base64 again before sending to php
FOO="$(echo $FOO | base64 -d)"
# this is where it goes wrong:
# php doesn't seem to like the gzip string format.
# gzuncompress produces:
# PHP Warning: gzuncompress(): data error in Command line code on line 1
php -r "echo gzuncompress('$FOO') . \"\n\";"
echo '--'
# gzdecode produces:
# PHP Warning: gzdecode(): data error in Command line code on line 1
php -r "echo gzdecode('$FOO') . \"\n\";"
echo '--'
# gzinflate produces:
# PHP Warning: gzinflate(): data error in Command line code on line 1
php -r "echo gzinflate('$FOO') . \"\n\";"
echo '--'
我怀疑问题可能出在 bash gzip 格式上。
但我看不到任何可能纠正此问题的选项。
感谢所有想法。
gzip 字符串在 bash 字符串中不安全,如果我 运行
FOO="$(echo "Hello world" | gzip -c | base64)"
FOO="$(echo "$FOO" | base64 -d)"
我收到一个错误
-bash: warning: command substitution: ignored null byte in input
但如果我使用 base64_decode() / gzdecode():
保留字符串 base64 编码,它会起作用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"));'
(从 here 中读取的标准输入示例)