PHP:如何检查 gz 文件是否已损坏?

Hir*_*ter 5 php gzip corrupt

有没有办法检测gz文件在PHP中是否损坏?

我目前正在使用http://www.php.net/manual/de/function.gzread.php#110078来确定文件大小并通过读取整个 * 文件

$zd = gzopen ( $file, "r" );
$contents = gzread ( $zd, $fzip_size );
gzclose ( $zd );
Run Code Online (Sandbox Code Playgroud)

不幸的是,一些 gz 文件已损坏,最后 4 个字节不代表 gz 文件的实际长度。只要数字是负数,我就可以判断出问题,但有时它是正数(并且非常大),这会导致内存不足错误。如何提前检查文件是否已损坏?

  • 我正在阅读整个文件,因为我发现没有工作方法可以在不知道最长行的大小的情况下逐行读取文件 - 这导致(在某些情况下)行不完整。

Mar*_*usz 0

如果你可以使用linux gzip命令,那么查找文件是否错误将会非常简单。如果文件有效,gzip -t将不显示任何消息。

if (`gzip -t $file 2>&1`) {
    echo "An error occured";
}
Run Code Online (Sandbox Code Playgroud)

  • @c-griffin:“if”条件执行外部程序。结果为空或非空字符串。请注意,“与您在评论中使用的”不同。来源:[链接](http://php.net/manual/en/language.operators.execution.php) (2认同)