Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание архива RAR
 
 автор: Filsh   (03.02.2011 в 16:13)   письмо автору
 
 

Как можно средствами пхп создать архив rar?
Облазил весь интернет, ничего не нашел, чтение пожалуйста, а вот запись нет.
Прошу помощи))

  Ответить  
 
 автор: cheops   (03.02.2011 в 16:26)   письмо автору
 
   для: Filsh   (03.02.2011 в 16:13)
 

Хм... в отличие от zip, rar является закрытым форматом, вряд ли будет легко обнаружить соответствующий модуль в свободном формате.

  Ответить  
 
 автор: Filsh   (03.02.2011 в 18:14)   письмо автору
 
   для: cheops   (03.02.2011 в 16:26)
 

Понятно, спасибо, плохо))

  Ответить  
 
 автор: neadekvat   (03.02.2011 в 18:01)   письмо автору
 
   для: Filsh   (03.02.2011 в 16:13)
 

Создавайте zip, т.к., как упомянуто выше, это открытый формат.

  Ответить  
 
 автор: Commander   (03.02.2011 в 19:33)   письмо автору
 
   для: Filsh   (03.02.2011 в 16:13)
 

Даже в Delphi с его уймой компонент это вряд ли возможно. Про PHP и говорить нечего.

  Ответить  
 
 автор: Filsh   (03.02.2011 в 19:50)   письмо автору
 
   для: Commander   (03.02.2011 в 19:33)
 

Вот интересно, а как же во всемирной паутине все лежит в архивах?
это что же все ручками...

  Ответить  
 
 автор: cheops   (03.02.2011 в 19:52)   письмо автору
 
   для: Filsh   (03.02.2011 в 19:50)
 

Ну во всемирной паутине незанятых ручек не мало :)))

  Ответить  
 
 автор: Trianon   (03.02.2011 в 20:00)   письмо автору
 
   для: Filsh   (03.02.2011 в 19:50)
 

почему ручками?
консольные утилиты есть для большинства распространенных окружений.
их можно запускать.

  Ответить  
 
 автор: Filsh   (03.02.2011 в 20:10)   письмо автору
 
   для: Trianon   (03.02.2011 в 20:00)
 

Вот, это уже интересно ))
Я не ищу легких путей, если можно подскажите где копать что бы это консольное приложение запустить под php, я так понимаю можно это сделать для rar

  Ответить  
 
 автор: cheops   (03.02.2011 в 20:13)   письмо автору
 
   для: Filsh   (03.02.2011 в 20:10)
 

А сайт будет под управлением Windows работать? Дело не хитрое, можно воспользоваться функциями группы exec(), которые выполняют команды операционной системы или обратными кавычками, которые делают тоже самое. Здесь есть подводный камень - как правило, эту возможность отключают на хост-площадках и для использования этой возможности необходим собственный сервер.

  Ответить  
 
 автор: Filsh   (03.02.2011 в 20:18)   письмо автору
 
   для: cheops   (03.02.2011 в 20:13)
 

Честно говоря это будет мой первый сайт и я расчитываю его ставить на VPS и конечно же на Linux )
А за exec() нужно подумать, что-то я не улавливаю как через нее это все сделать

  Ответить  
 
 автор: cheops   (03.02.2011 в 20:45)   письмо автору
 
   для: Filsh   (03.02.2011 в 20:18)
 

В первую голову нужно поискать, есть ли реализация rar под Linux (разархивировать точно можно, а вот создать архив - это вопрос). Функции exec() или в обратные кавычки нужно поместить команду операционной системы - она будет выполнена
<?php
  
// Что-то в этом духе, синтаксис нужно уточнить
  
`/path/to/rar -a /path/to/file.txt "archive.rar"`;
?>

PS Бывают хостинги и VPS и под Windows (с Apache, PHP, MySQL) - не самая приятная штука, но если создание rar-архивов - это ключевая часть проектов, можно посмотреть в их сторону.

  Ответить  
 
 автор: Trianon   (03.02.2011 в 21:46)   письмо автору
 
   для: cheops   (03.02.2011 в 20:45)
 

ftp://ftp.rarsoft.com/rar

  Ответить  
 
 автор: Filsh   (20.02.2011 в 11:17)   письмо автору
 
   для: Filsh   (03.02.2011 в 16:13)
 

Долго и мучительно я ставил а потом настраивал Linux под локальный сервер ))
и все таки с архивом все получилось и все оказалось на много проще чем я себе представлял,
вылаживаю то что у меня получилось, может кому-то пригодится, или возможно кто-то предложит улучшения,...
спасибо за подсказки )

function exec_rar($action, $album_dir, $files, $out_rar_name)
{
    if(!is_array($files)) {
        trigger_error ('exec_rar(). Incorrect input parameter', E_USER_ERROR);
        return false;
    }

    $path_to_rar = '/usr/local/bin/';
    $res = false;

    switch ($action)
    {
        case 'rar':
            $dir = getcwd();
            if(!chdir($album_dir))
                return false;
            
            $command = str_replace(' ', '\ ', $out_rar_name);
            foreach($files as $file)
            {
                $command .= ' '.str_replace(' ', '\ ', $file).' ';
            }

            $command = $path_to_rar.'rar a '.($command);

            if(system($command) == 'Done')
                $res = true;

            chdir($dir);
            return $res;
    }

    return $res;
}

  Ответить  
 
 автор: Filsh   (20.02.2011 в 13:03)   письмо автору
 
   для: Filsh   (20.02.2011 в 11:17)
 

Возникла у меня ошибка вот здесь

$command .= ' '.str_replace(' ', '\ ', $file).' ';


смысл в том что имя файла может быть таким
> 09 - No Love (Feat. Lil Wayne).mp3
и при исполнении в командной строке выпадает ошибка синтаксиса,
подскажите функцию экранирования

P.S. escapeshellcmd() не помогает, она у меня не работает с кирилицей

  Ответить  
 
 автор: Filsh   (20.02.2011 в 13:11)   письмо автору
 
   для: Filsh   (20.02.2011 в 13:03)
 

проблема решилась, спасибо

$command .= ' '.str_replace(array(' ', '(', ')'), array('\ ', '\(', '\)'), $file).' ';

но может есть лутше способ, буду признателен))

  Ответить  
 
 автор: Trianon   (20.02.2011 в 13:48)   письмо автору
 
   для: Filsh   (20.02.2011 в 13:11)
 

во-первых, респект.

во-вторых, скобки - не единственные спецсимволы оболочки, и я бы проверил поведение и на остальных символах, не дожидаясь, когда гром грянет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования