Соединение файлов в PHP

Nevermind

Новичок
Собственно произвожу соединение файлов в каталоге в 1 большой файл-архив. Архив - zip.
На виндовом сервере проходит отлично, на юниксе получаю поврежденный архив.
Задача сделать архив на юниксе рабочим. сравнение 2х файлов архивов полученных из одинаковых исходных составляющих показали что в виндоусе получаем файл в формате UNIX, в юниксе формата WINDOWS. Размер файлов в байтах в тотал командере абсолютно идентичен.

PHP:
$fp=fopen('archive.zip','wb');
$dir=opendir('test');
while($file=readdir($dir)){
	if($file=='.' || $file=='..')continue;
	$file_size=filesize('test/'.$file);
	$handle=fopen('test/'.$file,'rb');
 	$archive=fread($handle,$file_size);
	// $archive=str_replace("\r\n", "\n", $archive);      пробовал и так - не помогло
 	fwrite($fp,$archive);
	}
Помогите пожалуйста слепить файлы в рабочий архив.
 

Вурдалак

Продвинутый новичок
А кто тебе вообще сказал, что формат ZIP-файлов позволяет склеивать 2 архива вот так запросто? Например, судя по информации из Wikipedia это не так.
 

zerkms

TDD infected
Команда форума
Что такое "файл в формате UNIX" применительно к бинарнику?

ps: гхм, с чего ты решил, что если содержимое всех файлов свалить в один и назвать его zip - то это всё будет работать?
 

Nevermind

Новичок
по порядку:
- во первых никто про архивы не говорил. я сказал соединение файлов. Тоесть по сути ситуация примерно такая - например тоталом большой архив раздерибаниваем на части (тупо файл разделяем на части НЕ АРХИВЫ), суем их на сервер и там уже склеиваем обратно в 1 файл.
- кто сказал мне я не знаю, но раз на винде работает - значит и на Unix системах тоже должно работать как-то.
- файл в формате Unix - это то что мне показала утилита для сравнения файлов Compare It! в статусной строке. фто я так понимаю набор спец символов типа \r\n и \n в юниксовых и виндовых файлах. Пробовал замену - ломается и в винде, а в юниксе так и не работает.
-
shell_exec("zip arch.zip file.txt");
если можно - поподробнее что это мне даст? этой командой будет присоединять к arch.zip файл file.txt, без усечения первого? И думаю Хостер мне не даст выполнять шел команды... хотя можно попробовать.
 

WDStalker

Новичок
так будет ошибка:
$hFp = fopen('', "rb");
$xImg = '';
while(!feof($hFp)){
$xImg .= fread($hFp, 8192);
}
// куда-то записать $xImg
fclose($hFp);
 

Nevermind

Новичок
так будет ошибка:
$hFp = fopen('', "rb");
$xImg = '';
while(!feof($hFp)){
$xImg .= fread($hFp, 8192);
}
// куда-то записать $xImg
fclose($hFp);
Вы меян конечно извините, но я вот этого поста вообще не понял. Главный вопрос К ЧЕМУ ЭТО? ясное дело будет ошибка. если не указать имя файла.
Если Вы имели ввиду что будет ошибка если считать весь файл за один заход - то такое впечатление что Вы вообще не чиатете мои посты. написал же РАБОТАЕТ!!!!! 10 Мб файлы скрепляет в 1 файл, конечный файл по размеру соответствует и в винде даже разархивируется. в Юниксе не хочет. Как мне должен помочь этот пост????????
 

zerkms

TDD infected
Команда форума
Nevermind
Вообще в линуксе есть очень клёвая команда split для разбивания. А склеить можно тупо cat'ом
 

WDStalker

Новичок
Nevermind чудес не бывает, может быть, такое, что конца файла не достигаете.
а лучше сделать как zerkms написал.
 
Сверху