【问题标题】:PHP: How to check if gz file is corrupt?PHP:如何检查 gz 文件是否损坏?
【发布时间】:2023-12-30 23:43:01
【问题描述】:

有什么方法可以检测 PHP 中的 gz 文件是否损坏?

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

$zd = gzopen ( $file, "r" );
$contents = gzread ( $zd, $fzip_size );
gzclose ( $zd );

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

  • 我正在读取整个文件,因为在不知道最长行的大小的情况下,我找不到逐行读取文件的可行方法 - 这会导致(在某些情况下)行不完整。李>

【问题讨论】:

标签: php corrupt gzip


【解决方案1】:

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

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

【讨论】:

  • if ('gzip -t $file 2>&1') 在 PHP 中将始终返回 true。这是一个字符串。
  • @c-griffin: if 条件执行外部程序。结果为空或非空字符串。请注意,` 与您在评论中使用的 ' 不同。来源:link
  • 嗯,你是对的!对不起,我以为它们是单引号,甚至不知道你可以使用刻度来运行 shell 命令。
最近更新 更多