Ответ 1
Для ZipArchive
class, который должен присутствовать, PHP должен иметь расширение zip.
См. эту страницу для инструкций по установке (как для Linux, так и для Windows).
У меня проблема с установкой 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
class, который должен присутствовать, 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. Затем найдите почтовый индекс и проверьте его. Теперь сохраните.
Вы должны увидеть как изображение.
Обновить страницу. Ошибка должна исчезнуть.
Примечание: если вы не нашли, обратитесь к провайдеру сервера. Они установят для вас.
Это сработало
apt-get install php7.0-zip
и нет необходимости перезапускать php7.0-fpm
вручную.
Unpacking
php7.0-zip
(7.0.16-4+deb.sury.org~trusty+1
)...
Processing triggers forphp7.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 upphp7.0-zip
(7.0.16-4+deb.sury.org~trusty+1
)...
locale: Cannot setLC_ALL
to default locale: No such file or directoryCreating config file
/etc/php/7.0/mods-available/zip.ini
with new version
Processing triggers forphp7.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 с поддержкой zip. В руководстве написано следующее:
Чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip, используя опцию --enable-zip configure.
Недостаточно просто установить правильные расширения на сервере. Взгляните на ссылку по установке Pekka, опубликованную ранее. Мой ответ - это просто разъяснение его.
Если у вас есть доступ к WHM, это проще.
Войдите в WHM.
Перейдите на EasyApache 4 (или любую другую имеющуюся у вас версию) на вкладке Software.
В разделе "Установленные пакеты" нажмите "Настроить".
Перейдите на PHP Extensions, в поиске типа "zip" (без кавычек),
вы должны увидеть 3 модуля
проверь их все,
нажмите синюю кнопку несколько раз, чтобы завершить процесс.
Это сработало для меня. К счастью, у меня есть WHM.
PHP 5.2.0 и более поздние версии
Системы Linux
Чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip с помощью опции -enable-zip configure.
Окна
Пользователям Windows необходимо включить php_zip.dll внутри php.ini, чтобы использовать эти функции.
У меня была такая же проблема с CentOS и cPanel установленным сервером. Я установил пакет zipArchive через cPanel и не работал должным образом. После того, как я попробовал с таким количеством исправлений, предложенных везде и сразу, мне помогло только следующее.
Сначала найдите имя для правильного пакета с помощью приведенной ниже команды
yum search zip |grep -i php
Затем используйте приведенный ниже код.
yum install your_zip_package_name_with_php_version
В моем случае правильный код для установки zipArchive был
yum install php-pecl-zip.x86_64
У меня было решение по этой ссылке. Как я могу использовать zipArchive в PHP 7.2 с CentOS 7?
И эта установка как-то включила этот пакет, а также перезапустила работающие сервисы, и после завершения выполнения вышеуказанного кода проблема zipArchive исчезла.
Centos 6
yum install php-pecl-zip
service httpd restart
У меня была та же проблема, и она была решена с помощью двух командных строк:
sudo apt install php-zip
затем перезагрузите ваш веб-сервер для Apache
sudo service apache2 restart
Я столкнулся с этой проблемой в GCP при развертывании WordPress в среде App Engine Standard. Это решило это:
sudo apt-get install php7.2-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.