Фатальная ошибка: Класс 'ZipArchive' не найден
Что может вызвать эту ошибку:
Фатальная ошибка: Класс 'ZipArchive' не найден в /home/test/dummyurl.com/wp-content/themes/mytheme/upload-zip.php на строке 14
Версия PHP 5.3.1
Есть ли в WP встроенная функция, которую я должен использовать вместо этого? Например, функция "unzip_file" из строки 525 файла ./wp-admin/includes/file.php"?
function openZip($file_to_open) {
global $target;
$zip = new ZipArchive(); //Это строка 14
$x = $zip->open($file_to_open);
if($x === true) {
$zip->extractTo($target);
$zip->close();
unlink($file_to_open);
} else {
die("Возникла проблема. Пожалуйста, попробуйте еще раз!");
}
}

Это означает, что в вашей установке PHP отсутствует библиотека Zip. Вы можете установить её, перекомпилировав PHP с опцией --enable-zip
, или установить пакет PECL.

если у вас виртуальный хостинг, я бы рекомендовал написать вашему хостеру, чтобы узнать, могут ли они включить эту функцию для вашего сайта. Возможно, они отключили её, так как архивирование может быть ресурсоемкой операцией для процессора.

Интересно. Как установщик WordPress обходит эту проблему? Я бы хотел сделать что-то подобное.

@Scott B: Существует функция unzip_file()
, которая сначала пробует использовать ZipArchive
, как и вы, но если его нет, то переключается на PclZip — библиотеку для работы с zip-архивами, написанную на PHP. Поэтому я советую вам тоже попробовать использовать функцию unzip_file()
, так как она, скорее всего, всегда будет доступна в WordPress. (Может, стоит переформулировать этот вопрос так: "Как распаковывать файлы без ZipArchive
?")

Я согласен, я добавил это как отдельный вопрос > http://wordpress.stackexchange.com/questions/8213/how-to-unzip-files-without-ziparchive
