Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Класс ZipArchive и FTP
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Класс ZipArchive и FTP

Страниц (1): [1]
 

1. Нуб ушастый - 30 Ноября, 2014 - 13:49:09 - перейти к сообщению
Доброго всем бутербродаУлыбка

Пишу один проект , и нужно по FTP реализовать выгрузку архива на сайт клиента и его распаковку. Архив выгружается, файл-распаковщик создается, директория для распаковки при запросе скрипта тоже создается, но сам архив не распаковывается.

Заметил, что если архив загружен самим мной (т.е. юзером на сайт стандартным методом), то все нормально.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. ini_set("session.use_trans_sid", true);
  4. $sess=session_id();
  5. chmod("cms.zip",0666);
  6. $zipA=new ZipArchive();
  7. $zipA->open('cms.zip');
  8. $zipA->extractTo('files/');
  9. ?>


Ошибка на скрине. Помогите - что не так?
2. Quick - 30 Ноября, 2014 - 22:38:17 - перейти к сообщению
Файл unpack.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function unpackZip($dir,$file) {
  3.    if ($zip = zip_open($dir.$file.".zip")) {
  4.      if ($zip) {
  5.        mkdir($dir.$file);
  6.      chmod($dir.$file, 0777);
  7.        while ($zip_entry = zip_read($zip)) {
  8.          if (zip_entry_open($zip,$zip_entry,"r")) {
  9.            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
  10.            $dir_name = dirname(zip_entry_name($zip_entry));
  11.            if ($dir_name != ".") {
  12.              $dir_op = $dir.$file."/";
  13.                foreach ( explode("/",$dir_name) as $k) {
  14.                  $dir_op = $dir_op . $k;
  15.                  if (is_file($dir_op)) unlink($dir_op);
  16.                  if (!is_dir($dir_op)) mkdir($dir_op);
  17.             chmod($dir_op, 0777);
  18.                  $dir_op = $dir_op . "/" ;
  19.                  }
  20.                }
  21.            $fp=fopen($dir.$file."/".zip_entry_name($zip_entry),"w+");
  22.         chmod($dir.$file."/".zip_entry_name($zip_entry), 0777);
  23.            fwrite($fp,$buf);
  24.  
  25.            fclose($fp);
  26.  
  27.            zip_entry_close($zip_entry);
  28.        } else
  29.            return false;
  30.        }
  31.        zip_close($zip);
  32.      }
  33.   } else
  34.      return false;
  35.  
  36.   return true;
  37. }
  38. $dir = "files/";
  39. $file = 'cms';
  40. unpackZip($dir,$file);
  41. ?>
Файл cms.zip надо закачать в папку files и загрузить файл unpack.php
Источник: www.php.net

 

Powered by ExBB FM 1.0 RC1