Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Laravel Framework v5.4.33
PHP Version 7.1.6
Операционная система и её версия: linux centos
Добрый вечер.
Помогите, пож-та, создать динамический архив на Laravel.
Для начало, что было проделано.
1. На локальной машине (ОС Windows) для создания архива использовал ZipArchive (http://ru.php.net/manual/ru/book.zip.php) и всё работало, но когда перенес сайт на боевой сервер (ОС Linux), оказалось что данная библиотека не установлена и установить её не возможно.
2. Пробовал установить https://github.com/Chumper/Zipper. Сначало в composer.json прописал
"require": {
"php": ">=5.6.4",
"guzzlehttp/guzzle": "^6.0",
"intervention/image": "2.*",
"laravel/framework": "5.4.*",
"laravel/tinker": "~1.0",
"chumper/zipper": "1.0.x"
},
и запустил команду php composer.phar update
пакет установился успешно
- Installing chumper/zipper (v1.0.1): Downloading (100%)
затем в \config\app в providers прописал
Chumper\Zipper\ZipperServiceProvider::class
а в aliases
'Zipper' => Chumper\Zipper\Zipper::class
и на выходе получаю ошибку
Class 'Chumper\Zipper\ZipperServiceProvider' not found
3. Далее пробовал установить https://packagist.org/packages/nelexa/zip?q=
но composer выдал следующею ошибку
Problem 1
- nelexa/zip 3.0.1 requires php-64bit ^5.5 || ^7.0 -> your PHP version (7.1.6) does not satisfy that requirement.
- nelexa/zip 3.0.0 requires php-64bit ^5.5 || ^7.0 -> your PHP version (7.1.6) does not satisfy that requirement.
- Installation request for nelexa/zip ^3.0 -> satisfiable by nelexa/zip[3.0.0, 3.0.1].
4. После этого пробовал использовать вот эту библиотеку http://www.phpconcept.net/pclzip/pclzip-downloads
Для этого:
- в папке APP создал папку Libery, в которую скопировал файл pclzip.lib.php
- данный файл переименовал PclZip.php и в начале файла прописал следующий код
namespace App\Libery;
- затем в терминале прописал код php composer.phar dump-autoload
- после чего в контроллере подсоединил данную библиотеку
use App\Libery\PclZip;
- и попытался создать архив
$archive = new PclZip('archive.zip');
$v_list = $archive->create('download/3/index.html');//файл лежит в папке public/download/3/index.html. Права 777
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
- на выходе получаю следующею ошибку
Error : PCLZIP_ERR_READ_OPEN_FAIL (-2) : Unable to open archive '' in wb mode
Подскажите, пож-та, что я делаю не так или дайте ссылку на рабочую библиотеку. Буду рад любой помощи. Проект горит.
Заранее спасибо.
Не в сети
Для начала, путь к 'archive.zip' не пробовали указать?
Не в сети
В папке где находится скрипт, и куда вы хотите записать архив, нет прав на запись.
Изменено BaldaI (24.08.2017 06:00:04)
Не в сети
Спасибо за оперативный ответ.
Пробовал различные варианты:
$archive = new PclZip(public_path().'/archive.zip');
$archive = new PclZip('/archive.zip');
$archive = new PclZip('public/archive.zip');
$archive = new PclZip(public_path().'public/archive.zip');
Права на папки:
App
App/Libery
Public
Public/download
Поставил 777
Заметил странную особенность. В ошибке не отображается название архива
Проверил, в моём случаи, в данное поле должно вставляться значение 'archive.zip'
Также пробовал проверить, что вообще приходит в данную функцию
Пробовал напрямую вставлять данные в библиотеку
Но всегда выдаёт одну и туже ошибку. Такое ощущение, что «крыво» установлена библиотека.
Мыслей больше нет. Помогите, пож-та.
Изменено Vladimir_user (24.08.2017 10:15:45)
Не в сети
Этот пример работает?
https://yadi.sk/d/UZ9Uim5U3MHFHs
Не в сети
1. В папке public создал папку zip
2. В нее закинул pclzip.lib.php и test.php
3. Дал права доступа к папкам 777
public
public/zip
4. Получаю ошибку
Forbidden
You don't have permission to access /public/zip/ on this server.
Apache/2.2.15 (CentOS) Server
Изменено Vladimir_user (24.08.2017 10:48:25)
Не в сети
Наберите такой адрес в браузере: /public/zip/test.php
Не в сети
Отработал архив создался:)
Не в сети
Как теперь это прикрутить в логику Laravel?
Не в сети
Я брал pclzip.lib.php из этого пакета: https://packagist.org/packages/pclzip/pclzip
Можете подключить его в composer.json Laravel проекта и использовать.
Не в сети
Огромное спасибо.:D
Сделал проще, просто скопировал данные из Вашего файла pclzip.lib.php в свой App\Libery\PclZip.php и всё заработало.
Через composer не пробовал.
Всем благодарю кто отозвался.
Не в сети
Сделал проще, просто скопировал данные из Вашего файла pclzip.lib.php в свой App\Libery\PclZip.php и всё заработало.
А вот так делать не нужно.
Не в сети
Страницы 1