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

Posted

技术标签:

【中文标题】PHP:如何检查 gz 文件是不是损坏?【英文标题】:PHP: How to check if gz file is corrupt?PHP:如何检查 gz 文件是否损坏? 【发布时间】:2014-02-03 10:19:02 【问题描述】:

有什么方法可以检测 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 文件的实际长度。只要数字是负数,我就能判断出问题所在,但有时它是正数(而且非常大),这会导致内存不足错误。如果文件损坏,如何提前检查?

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

【问题讨论】:

查看unix.stackexchange.com/questions/15157/… 打开时应该使用"rb",而不是"r"。那么你可能一开始就没有问题。 【参考方案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 命令。

以上是关于PHP:如何检查 gz 文件是不是损坏?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WKWebview 检查链接是不是损坏?

如何使用 Android Webview 检查链接是不是脱机或损坏?

检查图像是不是有效(损坏)javaCV

如何使用 PHP 检查远程文件是不是存在?

如何使用 PHP 检查远程文件是不是存在?

有啥方法可以让 PHP 检测到损坏的图像?