Ошибка при gzuncompress

Тема в разделе "PHP", создана пользователем dandandan, 18 апр 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Переношу сайты на другой хостинг (в США). Возникла проблема. Страницы с текстом, хранящиеся в gzip не открываются с помощью
    PHP:
    $file=file_put_contents($put_do_fila);
    $text=gzuncompress(stripslashes($file));
    echo 
    $text;
    Получаю ошибку
    Warning: gzuncompress() [function.gzuncompress]: data error in /......dex.php on line 102

    На старом бывшем хостинге mchost и дома на компе все открывается. Пробовал перезакачивать файлы - проблема не ушла.
     
  2. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    фаилы в UTF-8?
    - я бы проверил кодировку
    - потом бы попытался прочитать фаил и выдать на страницу дамп
    - если дам есть то значит внутри проблема
    - может где есть 1 лишний символ до начала упаковки то тогда будет ошибка
    - может с буфферизацией проблема

    вот пример как у меня работает
    мой класс
    пример
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Кодировка всего сp1251. Архивиование делалось дома, надо только извлечь данные.

    Самое прикольное - создал отдельную папку и забросил туда файл для разархивирования и создал маленький скриптик - все работает пучком. А в скрипте а той же строке - ошибка.
     
  4. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    если не сложно валожи скрипт, тут подправим))
    так если я правильно понял это кеш в гзип?
    или ты отдаешь страничку в Гзип упаковывая ее?
    или что лучше выложи скрипты и пару фаилов и все)
     
  5. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Лежит страничка в гзип (для уменьшения размера файлов). Скриптом обращаюсь к этой странице.
    Делаю $text=file_get_contents('путь до файла') .
    Затем $text=gzuncompress(strip_slashes($text));
    И затем если упрощенно echo $text;

    В результате ругается на gzuncompress - пишет данные файла повреждены.
    Сам скрипт полность отлажен, так что ошибок быть не должно. Сейчас на локалхосте разЗипил все файлы и закинул незаархивированные и убрал функцию gzuncompress.

    Техподдержка хостинга предложила мне обратиться к разрабочку. :) т.е. мне самому к самому себе :).
     
  6. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    хотя бы 1 фаил сжаты приложи.. посмотреть для того можно ли заменить на говотовое решение с zip
    еще скачай с хоста и сравни по байтово фаилы если различаются то тогда нужно к хостеру писать, тк у меня был такой хостер у когорого можно было только в 1 папку бинарные фаилы складывать

    Добавлено через 32 минуты
    1
    ЭТО СОХРАНИТЬ! а не ЧИТАТЬ!!!!!

    2

    Добавлено через 35 минут
    --
    вот работает вот так
    trim нужно бы делать тоже для того что бы в конце отсеь перенос если тот есть... тк например когда я сохраняю то дописываю еще \n\r

    еще напиши как сохраняешь, именно код напиши
     
  7. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Вечером код примера архива сброшу. file_get_contents - как раз прочитать.

    Архивируемые данные получаются и принимаю функциями
    Код:
    function load_array_dump($filename) {
    $content = file_get_contents($filename);
    eval(‘$array=’.gzuncompress(stripslashes($content)).’;');
    return($array);
    }
    
    function save_array_dump($filename, $array) {
    $dump = addslashes(gzcompress(var_export($array,true),9));
    file_put_contents($filename, $dump);
    }
    
    p.s. Еще раз повторяю, что код полностью рабочий на старом хостинге и на локалхосте все отлично пахало. В данном примере могут быть маленькие косячки, т.к. это не прямоскопированный код из моего скрипта.
    p.s.s. Архивирование используется только для уменьшения размера файлов при хранении на хостинге.
     
  8. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Может у тебя eval не срабатывает? попробуй так:
    PHP:
    function load_array_dump($filename) {
    $content file_get_contents($filename);
    return 
    gzuncompress(stripslashes($content));
    }
     
  9. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    попробуй как вариант поработать всемто export c dump и с буфферами, попробуй сериализовать и тп

    на каждом шагде делай print_r и ищи где косяк...

    PHP:
    function load_array_dump($filename=null) {
    $content file_get_contents($filename,FILE_USE_INCLUDE_PATH);
    //eval('$array='.gzuncompress(stripslashes($content)).';');
    // не пойму зачем eval? если нужно просто присвоить то это можно и так сделать!
    $array=unserialize(gzuncompress(stripslashes($content)));
    // если это массив то
    //$array=array();
    //$array=gzuncompress(stripslashes($content));
    return($array);
    }
    function 
    save_array_dump($filename$array) {

    // не вижу смысла в функции var_export
    //$dump = addslashes(gzcompress(var_export($array,true),9));
      
    $dump=addslashes(gzcompress(serialize($array),9));
      
    /*
       * ob_start();
    var_dump($my_variable);
    $my_string = ob_get_contents();
    ob_end_clean();
       *
       */
    file_put_contents($filename$dump);
    }
     
  10. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Вечером переправил все скрипты, чтобы без gzuncompress работали. Все пашет. Всем спасибо. Тему можно закрывать.
     
Статус темы:
Закрыта.