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 :: Версия для печати :: архивация с помощью system()
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » архивация с помощью system()

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

1. Wintel - 09 Января, 2010 - 07:38:41 - перейти к сообщению
Вот написал архивацию:

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'.

Объясните плз как правильно сделать.
2. Мелкий - 09 Января, 2010 - 09:41:41 - перейти к сообщению
выполните данную команду для начала просто в консоли, 1 - это ошибка приложения, корректное завершение - ноль.
3. Wintel - 09 Января, 2010 - 09:59:45 - перейти к сообщению
в консоли пишет:"pkzip не является внутренней или внешней командой, исполняемой программой или пакетным файлом"
4. movEAX - 09 Января, 2010 - 10:13:46 - перейти к сообщению
Wintel пишет:

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


Ты пытался заархивировать программой которой либо нет на компьютере, либо она не доступна для консоли.
5. Wintel - 09 Января, 2010 - 10:22:50 - перейти к сообщению
ребят, посоветуйте тогда что-нить, что куда установить, пример киньте. А то я вообще х\з про эту функцию....
6. movEAX - 09 Января, 2010 - 10:36:12 - перейти к сообщению
Если хочешь архивировать через консоль, тогда, если установлен архиватор 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. }
7. Wintel - 09 Января, 2010 - 11:30:11 - перейти к сообщению
Спасибо большое))) в консоле заработало)))))
ток единственная проблема:
пишет после архивирования много строк на подобие: 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

Извиняюсь за тупку))) я где-то скобку или запятую забыл?
8. movEAX - 09 Января, 2010 - 14:43:21 - перейти к сообщению
Wintel пишет:
system('"С:\7-zip\7z" a -tzip "C:\zip5.zip" -r "C:\qwe"');


По остальному, почитай документацию к 7z в консоле. Это можно сделать либо в интернете, либо просто запустив программу в cmd без параметров.
9. Wintel - 09 Января, 2010 - 15:05:09 - перейти к сообщению
спс большое)

 

Powered by ExBB FM 1.0 RC1