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

PHP:如何检查gz文件是否损坏?,php,corrupt,gzip,Php,Corrupt,Gzip,有没有办法检测PHP中的gz文件是否损坏 我目前使用来确定文件大小,并通过 $zd = gzopen ( $file, "r" ); $contents = gzread ( $zd, $fzip_size ); gzclose ( $zd ); 不幸的是,一些gz文件已损坏,最后4个字节不代表gz文件的实际长度。只要数字是负数,我就能够判断出有什么地方出错了,但有时它是正数(而且非常大),这会导致内存不足错误。如何提前检查文件是否已损坏 我正在阅读整个文件,因为我发现没有一种有效的方法可以

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

我目前使用来确定文件大小,并通过

$zd = gzopen ( $file, "r" );
$contents = gzread ( $zd, $fzip_size );
gzclose ( $zd );
不幸的是,一些gz文件已损坏,最后4个字节不代表gz文件的实际长度。只要数字是负数,我就能够判断出有什么地方出错了,但有时它是正数(而且非常大),这会导致内存不足错误。如何提前检查文件是否已损坏

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

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

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

选中此项,打开时应使用
“rb”
,而不是
“r”
。那么您可能一开始就没有问题。
if('gzip-t$file 2>&1')
在PHP中总是返回true。这是一个字符串。@c-griffin:
如果
条件执行外部程序。结果为空或不是空字符串。请注意,您在评论中使用的“与”不同。来源:嗯,你说得对!抱歉,伙计,我以为它们是单引号,甚至不知道可以使用记号来运行shell命令。