PHP使用ZipArchive解压正常的zip文件可能会失败,这个问题很诡异。
部分代码:
$file = "1.zip";
$zip = new ZipArchive();
var_dump($zip->open($file));
输出的如果不是true
而是int格式的错误码,那就是打开压缩包失败,我遇到的错误码是19,这个错误码表示非正常的zip包,而这个压缩包是在本地电脑上正常用winrar压缩的,大小200M,本地运行和线上运行都报错。
试着只压缩少数几个文件,把压缩包体积降到100M,能解压成功。那有可能是压缩包大小的原因?但文档里说2G以内一般都没问题的。再猜测是不是zip格式的问题呢?
试着用Windows自带的压缩功能,也就是选择好要压缩的文件后,鼠标右键,发送到->压缩(zipped)文件夹,好了,这次可以解压成功了!看来还是ZipArchive包的问题,不太兼容WinRAR。