ZipArchive создаёт битые архивы

predator

web designer
ZipArchive создаёт битые архивы

Всем привет.
проблема следующая. надо сделать архиватор папки в зип файл.
принципиально работает, но архив получается битый и при просмотре видны даже не все файлы, хотя ZipArchive говорит что все файлы добавились.

система:
PHP Version 5.2.8
Windows NT COOL-47195F70A4 5.1 build 2600

zip
Zip enabled
Extension Version $Id: php_zip.c,v 1.1.2.46 2008/11/12 17:50:37 felipe Exp $
Zip version 1.8.11
Libzip version 0.9.0

zlib
ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3
Directive Local Value Master Value
zlib.output_compression On On
zlib.output_compression_level -1 -1
zlib.output_handler no value no value

код (например такой - хотя вариантов уже перепробовал массу):
PHP:
	error_reporting(E_ALL);
	ini_set('display_errors', '1');
	ini_set('max_execution_time', '5000');


// create object
$zip = new ZipArchive();
// open archive 
if ($zip->open('dir1/my-archive.zip', ZIPARCHIVE::CREATE) !== TRUE) {
    die ("Could not open archive");
}

// initialize an iterator
// pass it the directory to be processed
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("dir2/"));

// iterate over the directory
// add each file found to the archive
echo '<pre>';
foreach ($iterator as $key=>$value) {
	echo "$key file in process \n";
	$contents = file_get_contents( realpath($key) );
	if ( $contents === false ) {
		echo "$key file not added\n";
		continue;
	}
	$zip->addFromString( str_replace('dir2','altmed',$key), $contents );
	echo "$key file added\n";
}
echo '</pre>';

// close and save archive
$zip->close();
echo "Archive created successfully.";
exit;
пробовал и addFile тоже самое
проблема похоже в чём-то другом
файлов 15 штук в тестовом варианте - т.ч. проблема с файловым дескриптором тоже не подходит помоему

кто сталкивался с ZipArchive - помогите разобраться
 

Shasoft

Новичок
PHP:
$zip = new ZipArchive();
   if($zip->open($filenameZip, ZIPARCHIVE::CREATE)==TRUE)
   {// Получить список файлов для добавления
    $file_list = json_decode(stripslashes($_POST[files]),true);
    var_dump($file_list);
    for($i=0;$i<count($file_list);$i++)
      $zip->addFile($file_list[$i]);
   }
Создаю архив вот таким вот кодом. $file_list содержит список файлов в таком вот формате
$file_list = Array{
"./file1",
"./dir1/file2",
"./dir2/file3",
"./dir4/file4",
...
"./dir2/dir6/file10",
}
При создании никаких проблем не наблюдалось. Распаковывается всё на ура.
Список содержит по 10 файлов за один вызов. Тестовый архив на 750 файлов делал.
 

predator

web designer
обновился на php 5.3 - архив создаётся нормально )
т.ч. вопрос снят
там кстати некоторые модули builtin теперь (php_zip.dll в часности)
подробности тут http://bugs.php.net/bug.php?id=48184

-~{}~ 07.07.09 16:10:

не 5.3 сыроват ещё ))
вобщем в 5.2.10 тоже всё нормально с зипом
 
Сверху