To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

F.A.Q. - Najczęściej Zadawane Pytania - B??d kodowania zawarto?ci - FIX

tosiek - 09-08-2009, 11:32
Temat postu: Błąd kodowania zawartości - FIX
UWAGA: Zamiast wykonywać poniższe instrukcje ręcznie możesz skorzystać ze skryptu: https://przemo.org/phpBB2/forum/viewtopic.php?t=118066

Jeżeli masz taki błąd:

  • Firefox
    Cytat:
    Błąd kodowania zawartości
    Otwierana strona nie może zostać wyświetlona, ponieważ używa nieprawidłowych lub nieobsługiwanych metod kompresji.
    • Należy poinformować właścicieli witryny o tym problemie.

  • Google Chrome / Chromium
    Cytat:
    Strona internetowa jest niedostępna
    Strona internetowa pod adresem adresforum.pl może być tymczasowo niedostępna lub została na stałe przeniesiona pod nowy adres internetowy.
    Błąd 330 (net::ERR_CONTENT_DECODING_FAILED): Nieznany błąd.

  • Internet Explorer
    Cytat:
    Program Internet Explorer nie może wyświetlić witryny sieci Web
    Możesz spróbować wykonać następujące czynności:


I.
Rozwiązań może być kilka między innymi BOM w którymś w plików. Użyj http://tosiek.pl/utf-8-bom-remove-html-iframe/ aby usunąć ten znacznik. Drugi wariant to problem z GZIP w skrypcie forum:

II.
Otóż rozwiązanie jest proste :) często włączone jest GZIP lecz treść nie jest kompresowana albo jest kompresowana podwójnie lub ma kilka nagłówków :} Obdarzana jest tymi nagłówkami od serwera i od skryptu forum.

Na początek należy usunąć wszystkie niepotrzebne fragmenty kodu odpowiedzialne za kompresję z plików:
  • printview.php (linie 54-92 oraz 294-312)
  • shoutbox_view.php (linie 282-320 oraz 488-506)
  • admin\page_footer_admin.php (linie 57-75)
  • admin\page_header_admin.php (linie 36-74)
  • includes\page_header.php (linie 35-73)
  • includes\page_tail.php (linie 82-100)


z pliku printview.php usuń dwa fragmenty:
Kod:
$do_gzip_compress = FALSE;
if ( $board_config['gzip_compress'] )
{
    $phpver = phpversion();

    $useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');

    $is_ob_gzhandler_started = false;
    if ( @ini_get('zlib.output_compression') && (int)@ini_get('zlib.output_compression') != 0 && strtolower(@ini_get('zlib.output_compression')) != 'off' )
    {
        $is_ob_gzhandler_started = true;
    }
    else if ( @ini_get('output_handler') && strtolower(@ini_get('output_handler'))=='ob_gzhandler' )
    {
        $is_ob_gzhandler_started = true;
    }

    if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
    {
        if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
        {
            @ob_start('ob_gzhandler');
        }
    }
    else if ( $phpver > '4.0' )
    {
        if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
        {
            if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
            {
                $do_gzip_compress = TRUE;
                @ob_start();
                @ob_implicit_flush(0);

                @header('Content-Encoding: gzip');
            }
        }
    }
}

oraz:
Kod:
if ( $do_gzip_compress )
{
    //
    // Borrowed from php.net!
    //
    $gzip_contents = @ob_get_contents();
    @ob_end_clean();

    $gzip_size = strlen($gzip_contents);
    $gzip_crc = @crc32($gzip_contents);

    $gzip_contents = @gzcompress($gzip_contents, 9);
    $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);

    echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
    echo $gzip_contents;
    echo pack('V', $gzip_crc);
    echo pack('V', $gzip_size);
}


z pliku shoutbox_view.php usuń także dwa fragmenty:
Kod:
$do_gzip_compress = FALSE;
if ( $board_config['gzip_compress'] && !@headers_sent() )
{
    $phpver = phpversion();

    $useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');

    $is_ob_gzhandler_started = false;
    if ( @ini_get('zlib.output_compression') && (int)@ini_get('zlib.output_compression') != 0 && strtolower(@ini_get('zlib.output_compression')) != 'off' )
    {
        $is_ob_gzhandler_started = true;
    }
    else if ( @ini_get('output_handler') && strtolower(@ini_get('output_handler'))=='ob_gzhandler' )
    {
        $is_ob_gzhandler_started = true;
    }

    if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
    {
        if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
        {
            @ob_start('ob_gzhandler');
        }
    }
    else if ( $phpver > '4.0' )
    {
        if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
        {
            if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
            {
                $do_gzip_compress = TRUE;
                @ob_start();
                @ob_implicit_flush(0);

                @header('Content-Encoding: gzip');
            }
        }
    }
}

oraz:
Kod:
if ( $do_gzip_compress )
{
    //
    // Borrowed from php.net!
    //
    $gzip_contents = @ob_get_contents();
    @ob_end_clean();

    $gzip_size = strlen($gzip_contents);
    $gzip_crc = @crc32($gzip_contents);

    $gzip_contents = @gzcompress($gzip_contents, 9);
    $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);

    echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
    echo $gzip_contents;
    echo pack('V', $gzip_crc);
    echo pack('V', $gzip_size);
}


z pliku admin/page_footer_admin.php usuń jeden fragment:
Kod:
if( $do_gzip_compress )
{
    //
    // Borrowed from php.net!
    //
    $gzip_contents = ob_get_contents();
    ob_end_clean();

    $gzip_size = strlen($gzip_contents);
    $gzip_crc = crc32($gzip_contents);

    $gzip_contents = gzcompress($gzip_contents, 9);
    $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);

    echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
    echo $gzip_contents;
    echo pack('V', $gzip_crc);
    echo pack('V', $gzip_size);
}


z pliku admin/page_header_admin.php usuń jeden fragment:
Kod:
$do_gzip_compress = FALSE;
if ( $board_config['gzip_compress'] && !@headers_sent() )
{
    $phpver = phpversion();

    $useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');

    $is_ob_gzhandler_started = false;
    if ( @ini_get('zlib.output_compression') && (int)@ini_get('zlib.output_compression') != 0 && strtolower(@ini_get('zlib.output_compression')) != 'off' )
    {
        $is_ob_gzhandler_started = true;
    }
    else if ( @ini_get('output_handler') && strtolower(@ini_get('output_handler'))=='ob_gzhandler' )
    {
        $is_ob_gzhandler_started = true;
    }

    if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
    {
        if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
        {
            ob_start('ob_gzhandler');
        }
    }
    else if ( $phpver > '4.0' )
    {
        if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
        {
            if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
            {
                $do_gzip_compress = TRUE;
                ob_start();
                ob_implicit_flush(0);

                header('Content-Encoding: gzip');
            }
        }
    }
}


z pliku includes/page_header.php usuń fragment:
Kod:
$do_gzip_compress = FALSE;
if ( $board_config['gzip_compress'] && !@headers_sent() )
{
    $phpver = phpversion();

    $useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');

    $is_ob_gzhandler_started = false;
    if ( @ini_get('zlib.output_compression') && (int)@ini_get('zlib.output_compression') != 0 && strtolower(@ini_get('zlib.output_compression')) != 'off' )
    {
        $is_ob_gzhandler_started = true;
    }
    else if ( @ini_get('output_handler') && strtolower(@ini_get('output_handler'))=='ob_gzhandler' )
    {
        $is_ob_gzhandler_started = true;
    }

    if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
    {
        if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
        {
            @ob_start('ob_gzhandler');
        }
    }
    else if ( $phpver > '4.0' )
    {
        if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
        {
            if ( extension_loaded('zlib') && !$is_ob_gzhandler_started )
            {
                $do_gzip_compress = TRUE;
                @ob_start();
                @ob_implicit_flush(0);

                @header('Content-Encoding: gzip');
            }
        }
    }
}


z pliku includes/page_tail.php usuń:
Kod:
if ( $do_gzip_compress )
{
    //
    // Borrowed from php.net!
    //
    $gzip_contents = @ob_get_contents();
    @ob_end_clean();

    $gzip_size = strlen($gzip_contents);
    $gzip_crc = @crc32($gzip_contents);

    $gzip_contents = @gzcompress($gzip_contents, 9);
    $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);

    echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
    echo $gzip_contents;
    echo pack('V', $gzip_crc);
    echo pack('V', $gzip_size);
}



Teraz trzeba dodać poprawę dla obsługi GZIP w tym celu otwórz plik common.php i znajdź w nim linijkę:
Kod:
function microtime_float()

dodaj przed tą linią:
Kod:
$do_gzip_compress = true;
if (extension_loaded('zlib')) {
    ini_set('zlib.output_compression_level', 1);
    if (!( ini_get('zlib.output_compression') == 'On' || ini_get('output_handler') == 'ob_gzhandler' || ini_get('zlib.output_compression') == '1') && ini_get('zlib.output_compression_level') > 0 && $do_gzip_compress === true) {
        ob_start("ob_gzhandler");
    }
}


I gotowe ;) możemy bez obaw włączać GZIP w panelu administratora

Don8 - 10-08-2009, 14:57

niestety nawet po wykonaniu tej czynności jest błąd z wczytaniem strony
tosiek - 10-08-2009, 15:02

Don8, sprawdź tu:
http://www.gidnetwork.com/tools/gzip-test.php

I wyczyść cahche w przeglądarce, wszystko działa jak trzeba.

Don8 - 11-08-2009, 13:16

tosiek, po sprawdzeniu w tamtej stronie co podałeś jest takie coś:
Sorry, I am unable to decompress the contents of this page. Possible bogus gzip/deflate encoded data.
aaa inawet po wyczyszczeniu cache też nie działa - błąd kompresji danych

tosiek - 11-08-2009, 13:21

Don8, jeżeli mówisz o donwarez to wszystko działa OK.

tak samo tu:
http://www.whatsmyip.org/http_compression/

i tu:
http://nontroppo.org/tools/gziptest/

Don8 - 11-08-2009, 13:28

to skoro tam jest wszystko ok to dlaczego po wgraniu twojej poprawki jest nadal błąd kodowania ???
tosiek - 11-08-2009, 13:32

Don8, ciężko Ci zrozumieć że mi działa na każdej przeglądarce + testery online ?

Zaktualizuj sobie Firefox do 3.5.2, lub próbouj na innych przeglądarkach. I to ty byś mógł powiedzieć czemu akurat u Ciebie nie działa ? Przeżarta przeglądarka od warezowych wirusów ?

Don8 - 11-08-2009, 13:38

powiem ci czemu nie działa, po prostu nie jest to w 100 % dopracowane i tyle, bo nie tylko u mnie to nie działa.....
tosiek - 11-08-2009, 13:54

Don8, więc się zdecyduj i podaj adres forum o które Ci chodzi -.-

i dodatkowo wrzuć plik phpinfo.php do głównego katalogu a w nim:
Kod:
<?php
phpinfo();
?>

i podaj adres do tego pliku.

Don8 - 11-08-2009, 13:57

chodzi mi o donwarez, a tu adres pliku: http://donwarez.pl/phpinfo.php
tosiek - 11-08-2009, 14:01

Don8, skoro wyświetla Ci się błąd kodowania, to wyczyść cache forum, jak nie pomoże wyłącz gzip na forum i czytaj to:
http://webmajsterka.tosie...-ini-przyklady/
(ciebie dotyczy FASTCGI)
w pliku php.ini wpisz:
Kod:
zlib.output_compression =On
zlib.output_compression_level =1


[ Dodano: 11-08-2009, 14:02 ]
poza tym gdzie Ci sie wyświetla ten błąd ? (jeśli trzeba się logować załóż usera testowego)

Don8 - 11-08-2009, 16:43

FASTCGI nie dam rady wykonać bo jak chcę wgrać plik php5-cgi na ftp to jest błąd: 553 rename/move failure Operation not premitted

a błąd wyświetlało na stronie głównej - w ogóle nie wczytywało strony a usunięcie cache nic nie dało

tosiek - 11-08-2009, 21:44

Don8, jeżeli korzystałes z tego usuń tamten kod z common.php:
http://www.przemo.org/php...pic.php?t=81439

Ale ten z tego tematu możesz zostawić :)

Don8 - 12-08-2009, 11:17

mimo to nadal nie ziała
tosiek - 12-08-2009, 11:46

Don8, ale teraz w tej chwili Ci nie działa ?


Powered by phpBB modified by Przemo © 2003 phpBB Group