Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 24.08.2017 02:15:36

Создание архива в Laravel 5

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
 

Подскажите, пож-та, что я делаю не так или дайте ссылку на рабочую библиотеку. Буду рад любой помощи. Проект горит.
Заранее спасибо.

Не в сети

#2 24.08.2017 05:25:48

mixer
Откуда: Хабаровск
Сообщений: 19

Re: Создание архива в Laravel 5

Для начала, путь к 'archive.zip' не пробовали указать?

Не в сети

#3 24.08.2017 05:59:09

BaldaI
Откуда: Хабаровск
Сообщений: 16

Re: Создание архива в Laravel 5

В папке где находится скрипт, и куда вы хотите записать архив, нет прав на запись.

Изменено BaldaI (24.08.2017 06:00:04)

Не в сети

#4 24.08.2017 09:52:22

Re: Создание архива в Laravel 5

Спасибо за оперативный ответ.
Пробовал различные варианты:

$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

Заметил странную особенность. В ошибке не отображается название архива

89b82f12d7.jpg


Проверил, в моём случаи, в данное поле должно вставляться значение 'archive.zip'

0873a76676.jpg

9a8b17e0c6.jpg

Также пробовал проверить, что вообще приходит в данную функцию

555ecfdda4.jpg


Пробовал напрямую вставлять данные в библиотеку
77ad4b8ccb.jpg

Но всегда выдаёт одну и туже ошибку. Такое ощущение, что «крыво» установлена библиотека.
Мыслей больше нет. Помогите, пож-та.

Изменено Vladimir_user (24.08.2017 10:15:45)

Не в сети

#5 24.08.2017 10:15:21

BaldaI
Откуда: Хабаровск
Сообщений: 16

Re: Создание архива в Laravel 5

Этот пример работает?
https://yadi.sk/d/UZ9Uim5U3MHFHs

Не в сети

#6 24.08.2017 10:31:18

Re: Создание архива в Laravel 5

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)

Не в сети

#7 24.08.2017 10:40:04

BaldaI
Откуда: Хабаровск
Сообщений: 16

Re: Создание архива в Laravel 5

Наберите такой адрес в браузере: /public/zip/test.php

Не в сети

#8 24.08.2017 10:41:51

Re: Создание архива в Laravel 5

Отработал архив создался:)

Не в сети

#9 24.08.2017 10:42:27

Re: Создание архива в Laravel 5

Как теперь это прикрутить в логику Laravel?

Не в сети

#10 24.08.2017 10:50:27

BaldaI
Откуда: Хабаровск
Сообщений: 16

Re: Создание архива в Laravel 5

Я брал pclzip.lib.php из этого пакета: https://packagist.org/packages/pclzip/pclzip
Можете подключить его в composer.json Laravel проекта и использовать.

Не в сети

#11 24.08.2017 10:55:18

Re: Создание архива в Laravel 5

Огромное спасибо.:D
Сделал проще, просто скопировал данные из Вашего файла pclzip.lib.php в свой App\Libery\PclZip.php и всё заработало.
Через composer не пробовал.
Всем благодарю кто отозвался.

Не в сети

#12 24.08.2017 12:15:10

mixer
Откуда: Хабаровск
Сообщений: 19

Re: Создание архива в Laravel 5

Сделал проще, просто скопировал данные из Вашего файла pclzip.lib.php в свой App\Libery\PclZip.php и всё заработало.

А вот так делать не нужно.

Не в сети

Подвал раздела