За последние 24 часа нас посетили 56900 программистов и 1682 робота. Сейчас ищут 1237 программистов ...

Проблема при открытии архива, созданного ZipArchive

Тема в разделе "PHP для новичков", создана пользователем FishError, 27 июл 2010.

  1. FishError

    FishError Активный пользователь

    С нами с:
    16 фев 2008
    Сообщения:
    24
    Симпатии:
    0
    Необходимо отправить юзеру заархивированную програмку с измененными под него файлом настроек.
    делаю так:
    PHP:
    1.  
    2. <?php
    3. function send_prog() {
    4.    global $user;
    5.     $root ="/home/blabla/";
    6.     $dir = "programm_folder/";
    7.     $zip = new ZipArchive();
    8.     $filename = $root.uniqid().'.zip';
    9.  
    10.     if ($zip -> open($filename, ZipArchive::CREATE) === TRUE)
    11.     {
    12.         $dirs = array($dir);
    13.         while (count($dirs))
    14.         {
    15.             $dir = current($dirs);
    16.             $zip -> addEmptyDir($dir);
    17.             $dh = scandir($root.$dir);
    18.             foreach ($dh as $file)
    19.             {
    20.                 if ($file != '.' && $file != '..')
    21.                 {
    22.                     if ($file=='setup.xml') {
    23.                          $xml_content = file_get_contents($root.$dir.$file);
    24.                          $xml_content=str_replace('YOUR_LOGIN', $user['login'], $xml_content);
    25.                          $xml_content=str_replace('YOUR_PASSWORD',  md5($user['login'].'S0lt'.$user['passhash']), $xml_content);
    26.                          $zip->addFromString($dir.$file, $xml_content);
    27.                     }
    28.                     elseif (is_dir($root.$dir.$file)) {
    29.                             $dirs[] = $dir.$file."/";
    30.                         }
    31.                     elseif (is_file($root.$dir.$file))  {
    32.                         $zip -> addFile($root.$dir.$file, $dir.$file);
    33.                     }
    34.                 }
    35.             }
    36.             array_shift($dirs);
    37.         }
    38.         $zip -> close();
    39.     }
    40.     else
    41.     {
    42.         echo 'Error, can\'t create a zip file!';
    43.         exit();
    44.     }
    45.    
    46.        
    47.     header("Content-Disposition: attachment; filename=file_name.zip");
    48.     readfile ($filename);
    49.     unlink($filename);
    50.     exit();
    51. }
    52. ?>
    собственно все работает, отсылает.
    в тотал командере, различных архиваторах проблем нет. тесты в архиваторах дают "ошибок не обнаружено"
    в стандартном виндовом ошибка: при попытке "войти" в него - ZIP архив имеет неверный формат или поврежден.
    что такое может быть?