shell_exec архивация файла

Тема в разделе "PHP", создана пользователем vanderv, 6 апр 2011.

Модераторы: latteo
  1. vanderv

    vanderv

    Регистр.:
    30 май 2009
    Сообщения:
    270
    Симпатии:
    12
    http://www.sd-company.su/sd_base_xp/programming/php/php_archive.php
    Под хайдом ссылка, где рассказывается как архивировать файлы. Но из статьи непонятно как сохранять потом этот архив. И вообще мне этот способ кажется сомнительным, есть другие варианты?
     
  2. jabjab

    jabjab Создатель

    Регистр.:
    27 окт 2010
    Сообщения:
    42
    Симпатии:
    12
    В указанном примере все пакуется при помощи консольного zip. PHP только запускает архиватор при помощи shell_exec. Если у Вас такой способ устраивает, можно выполнить через shell_exec команду «zip "название zip-архива" "имя файла или папки"».
    Если для php установлен модуль «zip», то архивацию можно сделать и средствами php.
    В качестве примера Перейти по ссылке
     
  3. ocheretko

    ocheretko Постоялец

    Регистр.:
    28 фев 2009
    Сообщения:
    112
    Симпатии:
    50
    где-то читал статью, что есть сторонние классы для архивации винрар
     
  4. karapet

    karapet

    Регистр.:
    9 сен 2008
    Сообщения:
    168
    Симпатии:
    104
    Цитата: Ну и естественно очень советую выполнить на сервере man zip - все ключи в мане расписаны очень подробно :)

    Перейти по ссылке
     
  5. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    a чем плоха такая команда tar -c --file=/path/to/arx/file/uor.tar /dir/ ? )

    тар то почаще встречается чем zip )
     
  6. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    тем что использование в коде функций shell_exec и ей подобных - очень плохой стиль программирования. На томже phpclasses есть куча классов для работы с архивами, tar в том числе.


    tar это грубо говоря вообще не архив.
     
  7. FaLL3N

    FaLL3N Постоялец

    Регистр.:
    4 дек 2006
    Сообщения:
    100
    Симпатии:
    17
    убылнул :)

    тар в чистом виде это архив без сжатия, который может использовать пакеры gzip, bzip, lzma и т.д.
    По теме, похапе на 99% хостингов не дает выполнить shell_exec, exec, sytem команды, это базовые настройки безопасности
     
  8. shamantc

    shamantc ЗлОй ШаМан

    Заблокирован
    Регистр.:
    3 ноя 2008
    Сообщения:
    651
    Симпатии:
    183
    Дабы не создавать новой темы как можно заархивировать определенную директорию (Включая все файлы подкаталоги и т.д.) Если отключенно: shell_exec, exec и т.п? (Желательно на php)
     
  9. FaLL3N

    FaLL3N Постоялец

    Регистр.:
    4 дек 2006
    Сообщения:
    100
    Симпатии:
    17
    Если подключен пхпшный модуль Zip:
    PHP:
    function Zip($source$destination)
    {
        if (
    extension_loaded('zip') === true)
        {
            if (
    file_exists($source) === true)
            {
                    
    $zip = new ZipArchive();

                    if (
    $zip->open($destinationZIPARCHIVE::CREATE) === true)
                    {
                            
    $source realpath($source);

                            if (
    is_dir($source) === true)
                            {
                                    
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);

                                    foreach (
    $files as $file)
                                    {
                                            
    $file realpath($file);

                                            if (
    is_dir($file) === true)
                                            {
                                                    
    $zip->addEmptyDir(str_replace($source '/'''$file '/'));
                                            }

                                            else if (
    is_file($file) === true)
                                            {
                                                    
    $zip->addFromString(str_replace($source '/'''$file), file_get_contents($file));
                                            }
                                    }
                            }

                            else if (
    is_file($source) === true)
                            {
                                    
    $zip->addFromString(basename($source), file_get_contents($source));
                            }
                    }

                    return 
    $zip->close();
            }
        }

        return 
    false;
    }

    //Вызов:

    Zip('/folder/to/compress/''./compressed.zip');
     
  10. shamantc

    shamantc ЗлОй ШаМан

    Заблокирован
    Регистр.:
    3 ноя 2008
    Сообщения:
    651
    Симпатии:
    183
    И как его юзать? Мне надо что бы я указывал каталог который надо архивировать и каталог где будет уже готовый архив