PHP-unzip/open返回整数

PHP-unzip/open返回整数,php,unzip,Php,Unzip,我试图从zip中提取csv文件,在下面的代码中,我总是得到一个整数而不是布尔值 $zip = "path_to_zip/zip.zip"; if (file_exists($zip)) { echo "Extracting"; $z = new ZipArchive; $res = $z->open($zip); var_dump($res); if ($res === TR

我试图从zip中提取csv文件,在下面的代码中,我总是得到一个整数而不是布尔值

$zip = "path_to_zip/zip.zip";
if (file_exists($zip))
   {    
      echo "Extracting";
      $z = new ZipArchive;
      $res = $z->open($zip);

      var_dump($res);
      if ($res === TRUE)
         {
            $z->extractTo("my_path/");
            $z->close();
         }
       else
         {
            echo "failed";
         }
   }
当显示“Extraction”(提取)时,zip文件存在于指定的位置,但
$res
变量返回19作为整数,脚本以回显“failed”(失败)结束

如果我用
$res===TRUE
跳过该行,我会得到以下消息:

Warning: ZipArchive::extractTo(): Invalid or uninitialized Zip object 
您看到该对象有什么问题了吗?

ZipArchive::open()
返回
bool | int
(请参阅)

返回值为
true
或常量值

如果绕过测试,
$res===TRUE
$z
未准备好执行操作(“无效或未初始化的Zip对象”)。 您需要检查它。

信息19是常量ZipArchive::ER_NOZIP(“非zip存档”)的值。 因此,
$zip
不是有效的zip文件

要更好地查看错误状态,可以执行以下操作:

$z = new ZipArchive;
$res = $z->open($zip);

if ($res !== true)
{
    switch($res) {
        case ZipArchive::ER_EXISTS: 
            echo 'File already exists.';
            break;
        case ZipArchive::ER_INCONS: 
            echo 'Zip archive inconsistent.';
            break;
        case ZipArchive::ER_INVAL: 
            echo 'Invalid argument.';
            break;
        case ZipArchive::ER_MEMORY: 
            echo 'Malloc failure.';
            break;
        case ZipArchive::ER_NOENT: 
            echo 'No such file.';
            break;
        case ZipArchive::ER_NOZIP: 
            $finfo = finfo_open(FILEINFO_MIME_TYPE);
            echo 'Not a zip archive but a ' . finfo_file($finfo, $zip);
            break;
        case ZipArchive::ER_OPEN: 
            echo 'Can\'t open file.';
            break;
        case ZipArchive::ER_READ: 
            echo 'Read error.';
            break;
        case ZipArchive::ER_SEEK: 
            echo 'Seek error.';
            break;
    }
}
else
{
    // do stuff
} 

谢谢,这很奇怪,因为如果我手动提取zip文件,它就可以工作了。尺寸会有问题吗?我不这么认为。您确定它是真正的zip格式,还是其他扩展名为.zip的存档格式?什么是
$finfo=finfo\u打开的(FILEINFO\u MIME\u类型);echo finfo_文件($finfo,$zip)返回?啊!这是一个很好的猜测,它返回application/x-gzip,而我从中检索它的web服务指定了zip。我将检查是否可以获取该文件的其他版本。谢谢你给我指出了正确的方向。完成:)提供zip的公司肯定有问题,无论我选择哪种类型的文件,它总是gzip。我将改编我的剧本,谢谢!