"Недопустимый или унифицированный Zip-объект" Ошибка при закрытии файла DOCX

Когда я пытаюсь использовать этот код для подсчета страниц в файле.docx, я всегда получаю сообщение об ошибке:

"Предупреждение: ZipArchive::close(): недопустимый или унифицированный объект Zip в"

function PageCount_DOCX($file) {
    $pageCount = 0;

    $zip = new ZipArchive();

    if($zip->open($file) === true) {
        if(($index = $zip->locateName('docProps/app.xml')) !== false)  {
            $data = $zip->getFromIndex($index);
            $zip->close();
            $xml = new SimpleXMLElement($data);
            $pageCount = $xml->Pages;
        }
        $zip->close();
    }

    return $pageCount;
}

В чем дело?

1 ответ

У вас просто есть 2 закрытия zip в коде, второй вызовет ошибку, так как вы уже закрыли zip.

function PageCount_DOCX($file) {
    $pageCount = 0;

    $zip = new ZipArchive();

    if($zip->open($file) === true) {
        if(($index = $zip->locateName('docProps/app.xml')) !== false)  {
            $data = $zip->getFromIndex($index);
            // remove this one
            //$zip->close();
            $xml = new SimpleXMLElement($data);
            $pageCount = $xml->Pages;
        }
        // or remove this one
        $zip->close();
    }

    return $pageCount;
}
Другие вопросы по тегам