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

vanderv

Старатель
Регистрация
30 Май 2009
Сообщения
270
Реакции
12

Под хайдом ссылка, где рассказывается как архивировать файлы. Но из статьи непонятно как сохранять потом этот архив. И вообще мне этот способ кажется сомнительным, есть другие варианты?
 
В указанном примере все пакуется при помощи консольного zip. PHP только запускает архиватор при помощи shell_exec. Если у Вас такой способ устраивает, можно выполнить через shell_exec команду «zip "название zip-архива" "имя файла или папки"».
Если для php установлен модуль «zip», то архивацию можно сделать и средствами php.
 
где-то читал статью, что есть сторонние классы для архивации винрар
 
*** скрытое содержание ***
Под хайдом ссылка, где рассказывается как архивировать файлы. Но из статьи непонятно как сохранять потом этот архив. И вообще мне этот способ кажется сомнительным, есть другие варианты?

Цитата: Ну и естественно очень советую выполнить на сервере man zip - все ключи в мане расписаны очень подробно :)

 
a чем плоха такая команда tar -c --file=/path/to/arx/file/uor.tar /dir/ ? )

тар то почаще встречается чем zip )
 
a чем плоха такая команда tar -c --file=/path/to/arx/file/uor.tar /dir/ ? )
тем что использование в коде функций shell_exec и ей подобных - очень плохой стиль программирования. На томже phpclasses есть куча классов для работы с архивами, tar в том числе.


тар то почаще встречается чем zip )
tar это грубо говоря вообще не архив.
 
tar это грубо говоря вообще не архив.

убылнул :)

tar is short name for tape archive

тар в чистом виде это архив без сжатия, который может использовать пакеры gzip, bzip, lzma и т.д.
По теме, похапе на 99% хостингов не дает выполнить shell_exec, exec, sytem команды, это базовые настройки безопасности
 
  • Заблокирован
  • #8
Дабы не создавать новой темы как можно заархивировать определенную директорию (Включая все файлы подкаталоги и т.д.) Если отключенно: shell_exec, exec и т.п? (Желательно на php)
 
Если подключен пхпшный модуль Zip:
PHP:
function Zip($source, $destination)
{
    if (extension_loaded('zip') === true)
    {
        if (file_exists($source) === true)
        {
                $zip = new ZipArchive();

                if ($zip->open($destination, ZIPARCHIVE::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
Если подключен пхпшный модуль Zip:
PHP:
function Zip($source, $destination)
{
    if (extension_loaded('zip') === true)
    {
        if (file_exists($source) === true)
        {
                $zip = new ZipArchive();
                if ($zip->open($destination, ZIPARCHIVE::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');
И как его юзать? Мне надо что бы я указывал каталог который надо архивировать и каталог где будет уже готовый архив
 
Назад
Сверху