Как проверить на целостность архив .gz (gzip), zip файл в php?

02.10.2013  11:01

Штатными средствами PHP — никак. Лучше и надёжнее воспользоваться *nix командой gzip.

$file = $_SERVER["DOCUMENT_ROOT"].'/arc.gz';
//путь до файла
passthru("gzip -vt ".$file,$err);
// протестируем архив командой gzip 
//с ключом t - тест, 
//и с ключом v - verbose (распечатать результат)
echo $err;
// за что боролись, в переменную $err придёт или 0 или 1
//0 — ошибок нет. 
//1 — что-то пошло не так и архив, вероятно, битый


А вот ещё пара функций, с применением других команд:
/**
* filechecks_targz() - Verify the integrity of a .tar.gz file.
* проверка целостности .tar.gz файла
* @param      string   The name of the targz file to check
*/
function filechecks_targz($filename) {
   exec("tar -ztvf $GLOBALS[FTPINCOMING_DIR]/" . EscapeShellCmd($filename),$output,$ret);
   if ($ret) {
      for ($i=0;$i<count($output);$i++) {
     $exitout .= "
" . $output[$i] . "n"; } exit_error("Failed tar gz integrity check.","Output follows: $exitout"); } } /** * filechecks_gz - Verify the integrity of a .gz file. * проверка целостности .gz файла * @param string The name of the gz file to check. */ function filechecks_gz($filename) { exec("gunzip -t $GLOBALS[FTPINCOMING_DIR]/" . EscapeShellCmd($filename),$output,$ret); if ($ret) { for ($i=0;$i<count($output);$i++) { $exitout .= "
" . $output[$i] . "n"; } exit_error("Failed gzip integrity check.","Output follows: $exitout"); } }

Не работает exec()? Значит на сервере по умолчанию заблокировано выполнение серверных команд из PHP: "shell_exec() is disabled for security reasons". Соответственно надо разрешить.

Вуаля! Теперь можно уверенно сказать целый ли архив (мог не запаковаться либо не докачаться — всё что угодно).


перейти в Блог | Блог (стр. 14)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): *nix 3  PHP 47  web-программирование 71  

комментарии:
29.03.2016 11:28
Измайлов Антон
Быстро и бесплатно найти партнеров по бизнесу и новых клиентов для Вашей фирмы!

Предлагаем базы данных фирм России, Украины, Белоруссии и Казахстана по СИМВОЛИЧЕСКИМ ЦЕНАМ!


Для заказа баз данных фирм писать ТОЛЬКО на эту почту: baza-gorodov(собака)yandex.ru

БАЗЫ ВСЕГДА ТОЛЬКО ЧТО СОБРАННЫЕ - ВСЕГДА НОВЫЕ !!!


Спектр применения баз фирм очень широк:

1. Вы можете использовать их для обзвона потенциальных клиентов
2. для рассылки писем по email
3. для смс - рассылки
4. Для почтовой рассылки на юридические адреса фирм
5. Для поиска партнеров и новых клиентов в социальных сетях на страничках фирм
6. Для написания Вашего предложения на сайтах фирм и т.д.


Стоимость базы фирм 1 города - от 700 до 1200 рублей! По стране 1 вид деятельности - 2000 рублей!

Все данные юрлиц содержат подробную информацию, разбитую по разделам, подразделам и рубрикам!

В базах есть (формат Ексель): страна, регион, населенный пункт, адрес, телефон, email, сайт, город, (разделы и рубрики для выбора по фильтру),
а так же странички или группы соцсетей фирм: ВК, Твиттер, Фейсбук, ОД


Для заказа баз данных фирм писать ТОЛЬКО на эту почту: baza-gorodov(собака)yandex.ru
 

Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)