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 文件是不是损坏?的主要内容,如果未能解决你的问题,请参考以下文章