Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Extensions > Работа с архивами в PHP


Автор: CTYDEHT 19.4.2005, 19:54
Привет всем. Облазил этот форум вдоль и поперек, но так и не нашел решения проблемы, так что прошусильно не ругаться smile.

А проблема примерно следующая:

Мне нужно написать скрипт, с помощью которого можно будет делать 2 вещи:

1. Загрузить архив (содержащий папки и файлы) на сервер через Explorer, распаковать этот архив и разместить файлы по нужным папкам.

2. Обратная процедура, т.е. взять нужные папки и файлы, заархивировать их и потом передать браузеру (Save File Dialog)...

И все это может быть и ничего.. только этот скрипт должен как можно меньше зависить от платформы. Т.е. скопировал его через FTP и пользуйся... Соответственно:

- не возможно компилировать php
- не возможно добавлять библиотеки (кроме случаев, если файл включается при каждой интерпретации php и находится где-то в папке public_html)
- должно работать как на Unix так и на Windows платформах.

Понимаю, что это усложняет дело.. поэтому предположим, что пользуемся только платным хостингом.

Дело в том, что никогда раньше мне не приходилось работать в архивами через php, поэтому даже самая простая информация может мне пойти на пользу.

Вот smile Прошу вашего мнения и советов...

Спасибо.

Автор: Opik 20.4.2005, 13:09
CTYDEHT
1) по загрузке - есть в факе.
про раскаковку: http://ee.php.net/zip
2) ссылка выше.

Автор: CTYDEHT 20.4.2005, 13:23
Спасибо, но читай пожалуйста внимательнее мое сообщение...

Цитата
- не возможно компилировать php
- не возможно добавлять библиотеки (кроме случаев, если файл включается при каждой интерпретации php и находится где-то в папке public_html)
- должно работать как на Unix так и на Windows платформах.


На счет http://ee.php.net/zip я знаю, но коды, всятые оттуда выдают:

Цитата
Fatal error: Call to undefined function: zip_open()

Автор: CTYDEHT 20.4.2005, 13:51
Покопался в PhpMyAdmin... Нашел библиотеку zip.lib.php, но эта библиотека только создает zip архив, но не может его распаковавыть...

Не знаете, можно ли где-то найти подобные библиотеки для zip, rar, которые включаешь в код при выполнении скрипта и которые умеют как создавать так и распаковывать многотомные архивы..???

Автор: Axxent 20.4.2005, 14:32
CTYDEHT
Как насчет system("./unzip [что-то]")? Анзип ложишь в ту же папку. Так же поступить и с зипом.

Автор: Mal Hack 20.4.2005, 15:22
Цитата(Axxent @ 20.4.2005, 15:32)
system("./unzip [что-то]")?

Наиболее приемлимый вариант.
еще как вариант - PEAR http://pear.php.net

Автор: CTYDEHT 20.4.2005, 23:01
Ребята... нашел суперную, с моей точки зрения библиотеку... может все, что и обычный архиватор.. даже больше.... причем добавляется точно как я хотел... через

Код

require_once('pclzip.lib.php');


взять можно здесь:
http://www.phpconcept.net/pclzip/index.en.php#download

а здесь руководство пользователя:
http://www.phpconcept.net/pclzip/man/en/index.php

Все предельно просто и удобно... но вот проблема... На локаохосте все работает ок.. (потому-что на винде), но как заливаю на сервак начинаются проблемы.

создание архивов проблемы не вызывает, а вот распаковка... если в архиве файлы не лежат в папках - распаковка без проблем... а если древовидная структура - создается корневая папка и файлы, которые на одном уровне с этой папкой.. а в саму папку ничего не пишется...

предпологаю, что это из за каких-то настроек/запретов сервера.... не помогает, если даже ставлю перед распаковкой

Код

umask (000);


Менять chmod не позволяет сервер...

Повторю, что решение с изменением настроек сервера не подходит.... можно ли это как-то обойти?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)