gzuncompress()似乎正常工作但我每次都得到php警告

时间:2018-04-11 01:53:12

标签: php gzip

在应用程序中,UTF8字符串通过zlib进行压缩。 然后使用十六进制表示法将原始缓冲区转换为文本字符串。 这是以' blob ='发送的。通过GETPOST,取决于php脚本。

在php脚本中,完成以下操作:

$blob = eregi_replace( '[^0-9a-f]', '', $_GET['blob']);
if (!$blob) $blob = eregi_replace( '[^0-9a-f]', '', $_POST['blob']);

$binblob = hex2bin($blob);

$str = gzuncompress($binblob);

if ($blob)
    {
    mail("me@me.com", "[TEST]", $blob . " -> " . $str , "From:me@me.com");
    }

这似乎运作良好,例如我得到了这个结果:

789c0bc9c82c5600a2448592d4e21200247304f6 - > This is a test

哪个是正确的,因为"这是一个测试" 压缩的内容,bin2hex&ed以及发送到php脚本。

但是,我注意到每次在日志中都有一个警告,没有进一步说明原因。

PHP Warning:  gzuncompress(): data error in .../test.php on line 6

任何人都知道为什么我每次都会收到警告?

修改

还试过:

$str = zlib_decode($binblob); 

但结果是一样的。

我甚至尝试使用zlib-encode文档示例"Hello world"。 应用程序构建完全相同的字符串: 789ccb48cdc9c95728cf2fca4901001a0b045dzlib_decode()仍会向日志发出警告。结果字符串" Hello world"没关系。

我的临时解决方案是取消警告:

$errlevel = error_reporting() ;
error_reporting($errlevel & ~E_WARNING);

// $str = gzuncompress($binblob);
$str = zlib_decode($binblob); // Same result as gzuncompress($binblob);

error_reporting($errlevel);

但是未指明的警告让我感到不舒服

0 个答案:

没有答案