У меня проблема с установкой «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 в папку, где есть скрипт, но он не работает.
Для того ZipArchive
класс 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
Вам также необходимо скомпилировать 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, чтобы использовать эти функции.
Это сработало
apt-get install php7.0-zip
и не нужно перезапускать php7.0-fpm
вручную.
Unpacking php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ... Processing triggers for php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) ... php7.0-fpm stop/waiting php7.0-fpm start/running, process 1572 php7.0-fpm stop/waiting php7.0-fpm start/running, process 1777 Setting up php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ... locale: Cannot set LC_ALL to default locale: No such file or directory Creating config file /etc/php/7.0/mods-available/zip.ini with new version Processing triggers for php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) ... php7.0-fpm stop/waiting php7.0-fpm start/running, process 2354 php7.0-fpm stop/waiting php7.0-fpm start/running, process 2397
Прежде всего, решение для удаленного сервера:
Если вы используете cpanel, у вас может быть расширение zip, но не активировано. Вам нужно активировать его. Для этого случая вам нужно перейти в cpanel> внутри раздела программного обеспечения> нажмите на PHP-версию . Затем найдите zip и проверьте его. Теперь сохраните.
Вы должны видеть, как изображение.
Обновить страницу. Ошибка должна исчезнуть.
Примечание. Если вы не нашли, обратитесь к поставщику услуг. Они установят для вас.
1) Вам должен require
файл с файлом ZipArchive
.
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.