У меня проблема с установкой "Archive_Zip 0.1.1" на Linux-сервере, но когда я пытаюсь запустить script для создания 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 в папку, где script есть, но он не работает.
Для ZipArchive
class, который должен присутствовать, PHP должен иметь расширение zip.
См. эту страницу для инструкций по установке (как для Linux, так и для Windows).
На Amazon ec2 с Ubuntu + nginx + php7 у меня были те же проблемы, которые были решены с помощью:
sudo apt-get install php7.0-zip
sudo apt-get install php7.1-zip
для Ubuntu / php7.1
На рабочем столе 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
php7.0-zip
для PHP 7.
Это сработало
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
PHP 5.2.0 и более поздние версии
Системы Linux
Чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip с помощью опции -enable-zip configure.
Окна
Пользователям Windows необходимо включить php_zip.dll внутри php.ini, чтобы использовать эти функции.
Вам также нужно скомпилировать PHP с поддержкой zip. В руководстве написано следующее:
Чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip, используя опцию --enable-zip configure.
Недостаточно просто установить правильные расширения на сервере. Взгляните на ссылку по установке Pekka, опубликованную ранее. Мой ответ - это просто разъяснение его.
Прежде всего, решение для удаленного сервера:
Если вы используете 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.