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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: архивация с помощью system()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: объясните пожалуйста как правильно ее прописать.
Wintel
Отправлено: 09 Января, 2010 - 07:38:41
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Вот написал архивацию:

CODE (text):
скопировать код в буфер обмена
  1. <?
  2.  
  3. $file="1";
  4. $directory1="Z:\\home\\test11.ru\\www\\pp\\";  \\куда архивируем
  5. $arc="Z:\\home\\test11.ru\\www\\papka\\";        \\что архивируем
  6.  
  7. system("pkzip -add -dir=relative -recurse".$directory1.$file.".zip ".$arc.$file."\\*.*",$retval);
  8.  
  9. ?>


Никаких ошибок не выдает, но и не архивирует папку. Подключал pkzip.
$retval выдает '1'.

Объясните плз как правильно сделать.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Января, 2010 - 09:41:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




выполните данную команду для начала просто в консоли, 1 - это ошибка приложения, корректное завершение - ноль.


-----
PostgreSQL DBA
 
 Top
Wintel
Отправлено: 09 Января, 2010 - 09:59:45
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




в консоли пишет:"pkzip не является внутренней или внешней командой, исполняемой программой или пакетным файлом"
 
 Top
movEAX
Отправлено: 09 Января, 2010 - 10:13:46
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Wintel пишет:

в консоли пишет:"pkzip не является внутренней или внешней командой, исполняемой программой или пакетным файлом"


Ты пытался заархивировать программой которой либо нет на компьютере, либо она не доступна для консоли.


-----
армия.. самое убогое место
 
 Top
Wintel
Отправлено: 09 Января, 2010 - 10:22:50
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




ребят, посоветуйте тогда что-нить, что куда установить, пример киньте. А то я вообще х\з про эту функцию....
 
 Top
movEAX
Отправлено: 09 Января, 2010 - 10:36:12
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Если хочешь архивировать через консоль, тогда, если установлен архиватор 7z то можно использовать следующую команду:

CODE (text):
скопировать код в буфер обмена
  1. (путь до архиватора C:\.....)7z a -tzip C:\zip.zip  -r "C:\Program Files\7-Zip"

a - указываем что сейчас мы будем добавлять файлы
-tzip - тип сжатия zip
C:\zip.zip - имя архива и его местоположение
-r - рекурсивное архивирование, т.е. заходим в подпапки
C:\Program Files\7-Zip - папка которую мы архивируем

Если средствами php, то можно воспользоваться классом ZipArchive, он будет доступен после добавления библиотеки php_zip.dll (php.ini -> extension=php_zip.dll).

PHP:
скопировать код в буфер обмена
  1. $zip = new ZipArchive;
  2. if ($zip->open('test.zip') === TRUE) {
  3.     $zip->addFile('/path/to/index.txt', 'newname.txt');
  4.     $zip->close();
  5.     echo 'ok';
  6. } else {
  7.     echo 'failed';
  8. }


-----
армия.. самое убогое место
 
 Top
Wintel
Отправлено: 09 Января, 2010 - 11:30:11
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Спасибо большое))) в консоле заработало)))))
ток единственная проблема:
пишет после архивирования много строк на подобие: C:\Users\Default\My documents\ : отказано в доступе
в конце пишет WARNING: Cannot find 76 files
и кроме архивируемой папки добавляет папку с каждый раз с разными названиями и в ней txt документы имеющие название архивируемого документа +1,+2 и тд.
Это что-то имеет отношение к правам дотупа?
(Добавление)
вот так в консоли работает:
CODE (text):
скопировать код в буфер обмена
  1. С:\7-zip\7z a -tzip C:\zip5.zip -r "C:\qwe"


а написал в php:
CODE (text):
скопировать код в буфер обмена
  1. system("С:\7-zip\7z" a -tzip "C:\zip5.zip" -r "C:\qwe");


выводит: Parse error: syntax error, unexpected T_STRING

Извиняюсь за тупку))) я где-то скобку или запятую забыл?
 
 Top
movEAX
Отправлено: 09 Января, 2010 - 14:43:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Wintel пишет:
system('"С:\7-zip\7z" a -tzip "C:\zip5.zip" -r "C:\qwe"');


По остальному, почитай документацию к 7z в консоле. Это можно сделать либо в интернете, либо просто запустив программу в cmd без параметров.


-----
армия.. самое убогое место
 
 Top
Wintel
Отправлено: 09 Января, 2010 - 15:05:09
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




спс большое)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB