Фатальная ошибка: класс 'ZipArchive' не найден в
у меня проблема, что я устанавливаю "Archive_Zip 0.1.1" на сервере Linux, но когда я пытаюсь запустить скрипт для создания zip-файла, он дает фатальную ошибку
фатальная ошибка: класс
ZipArchive
не найден в ...
куда я положил код
$zip = new ZipArchive;
var_dump($zip);
$res = $zip->open($filename, ZipArchive::OVERWRITE);
if ($res !== TRUE) {
echo 'Error: Unable to create zip file';
exit;
}
if (is_file($src)) {
$zip->addFile($src);
} else {
// echo "<br>" . dirname(__FILE__) . $src;//'/install1';
if (!is_dir($src)) {
$zip->close();
@unlink($filename);
echo 'Error: File not found';
exit;
}
recurse_zip($src, $zip, $path_length);
}
$zip->close();
echo "<br>file name ".$filename;
но он не находит файл класса.
Пожалуйста, скажите мне решение. Что нужно сделать, чтобы решить проблему?
Я также поставил php.ini
файл в папку, где находится скрипт, но он не действовать.
11 ответов
на ZipArchive
класс чтобы присутствовать, PHP должен иметь расширением zip установлен.
посмотреть на этой странице для инструкций по установке (как Linux, так и Windows).
на Amazon ec2 с Ubuntu + nginx + php7 у меня были те же проблемы, решенные с помощью:
sudo apt-get install php7.0-zip
на рабочем столе ubuntu мне пришлось это сделать.
sudo apt-get install php5.6-zip
Это установило библиотеку, но я все еще продолжал получать ту же ошибку, поэтому мне пришлось перезапустить apache, используя:
sudo service apache2 restart
и это сработало.
Я не вижу его здесь, поэтому я хотел бы добавить, что на Debian/Ubuntu вам может понадобиться включить расширение после установки относительного пакета. Итак:
sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
прежде всего, решение для удаленного сервера:
Если вы используете cpanel возможно, у вас установлено расширение zip, но не активировано. Вам нужно его активировать. Для этого случая вам нужно перейти в cpanel > внутри раздела программного обеспечения > нажмите на PHP версии. Тогда найдите zip и проверить его. Теперь спасай.
вы должны видеть, как изображение.
обновить страницу. Этот ошибка должна исчезнуть.
Примечание: Если вы не нашли, обратитесь к поставщику сервера. Они установят для вас.
он работал
apt-get install php7.0-zip
и не нужно перезапускать php7.0-fpm
вручную.
распаковка
php7.0-zip
(7.0.16-4+deb.sury.org~trusty+1
) ...
Обработка триггеров дляphp7.0-fpm
(7.0.11-1+deb.sury.org~trusty+1
) ...php7.0-fpm
остановка/ожиданиеphp7.0-fpm
запуск / запуск, процесс 1572php7.0-fpm
остановка/ожиданиеphp7.0-fpm
запуск / запуск, процесс 1777
Настройкаphp7.0-zip
(7.0.16-4+deb.sury.org~trusty+1
) ...
язык: не установленLC_ALL
для локали по умолчанию: нет такого файла или каталогасоздание файла конфигурации
/etc/php/7.0/mods-available/zip.ini
С новой версией
Обработка триггеров дляphp7.0-fpm
(7.0.11-1+deb.sury.org~trusty+1
) ...php7.0-fpm
остановка/ожиданиеphp7.0-fpm
запуск / запуск, процесс 2354php7.0-fpm
остановка/ожиданиеphp7.0-fpm
запуск / запуск, процесс 2397
вам также необходимо скомпилировать PHP с поддержкой zip. В руководстве говорится следующее:
чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip, используя опцию -- enable-zip configure.
недостаточно просто установить правильные расширения на сервере. Посмотрите на ссылку инструкции по установке Pekka, опубликованную ранее. Мой ответ - всего лишь его разъяснение.
PHP 5.2.0 и более поздние версии
системы Linux
чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip, используя опцию -- enable-zip configure.
Windows
пользователям Windows необходимо включить php_zip.dll внутри php.ini для использования этих функций.
Если у вас есть WHM, это проще.
войдите в WHM.
на EasyApache 4 (или любая версия у) под программа tab.
В Разделе Установленные Пакеты нажмите кнопку Настройки.
на расширения PHP в поиск типа "zip" (без кавычек),
вы должны увидеть 3 модули
регистрация всех из них,
нажать синюю кнопку несколько раз, чтобы завершить процесс.
Это работает для меня. К счастью, у меня есть WHM.
у меня была такая же проблема с CentOS и cPanel установлен сервер. Я установил пакет zipArchive через cPanel и работал не так, как ожидалось. После попытки с таким количеством исправлений предложил каждый и везде только ниже работал для меня.
сначала найдите имя для правильного пакета с помощью следующей команды
yum search zip |grep -i php
затем используйте приведенный ниже код.
yum install your_zip_package_name_with_php_version
В моем случае правильный код для установки одному был
yum install php-pecl-zip.x86_64
у меня было решение по этой ссылке. как я могу inslatt zipArchive на PHP 7.2 с CentOS 7?
и эта установка каким-то образом включила этот пакет, а также перезапустила действующие службы и после завершения выполнения вышеуказанного кода проблема zipArchive исчезла.
1) Вы должны require
ваш файл .
require 'path/to/file/ZipArchive.php';
2) или использовать __autoload
метод класса.
В PHP 5 это отличный метод __autoload().
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1(); // creating an object without require.