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

  • Автор темы Автор темы predator
  • Дата начала Дата начала

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 - помогите разобраться
 
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 файлов делал.
 
обновился на 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 тоже всё нормально с зипом
 
Сверху