Erro 330 (net :: ERR_CONTENT_DECODING_FAILED):


98

Recentemente, migramos para um novo servidor. Após 2 dias, tive os seguintes problemas

1) Ocorreu uma falha em uma tabela de sessão, que foi facilmente corrigida reparando-a

2) Executamos OpenX como nosso adserver, e também travou, mas não há nenhuma evidência em error.log Ele permite que você faça o login, mas no momento de olhar para dashboard.php, obtemos:

Error 330 (net::ERR_CONTENT_DECODING_FAILED): (Google Chrome)

e

A página que você está tentando visualizar não pode ser exibida porque usa uma forma de compactação inválida ou não suportada. (Raposa de fogo)


OpenX usa os seguintes serviços em PHP:

OpenX requer: http://www.openx.com/docs/2.8/adminguide/System%20requirements

OpenX usa as configurações de PHP padrão. No entanto, os administradores do servidor às vezes alteram essas configurações. Antes de instalar o OpenX, verifique se as seguintes configurações estão corretas:

magic_quotes_runtime deve estar desativado safe_mode deve estar desativado register_argc_argv deve estar ativado se você deseja executar a manutenção via linha de comando file_uploads deve ser ativado para permitir uploads de arquivos HTTP OpenX requer as seguintes extensões PHP:

A mysqlextensão ou o pgsql. A mysqliextensão não é compatível. A extensão ZLib, para converter links dentro de arquivos Flash compactados gerados por Flash MX. A extensão FTP. Se isso não estiver presente, o OpenX tentará simulá-lo, o que pode ser uma solução menos estável.

A extensão GD, para gerar gráficos na página inicial. Se a extensão não estiver habilitada, você não poderá ver gráficos ou estatísticas em sua página inicial. A extensão openssl ou uma extensão curl habilitada para SSL são necessárias para fazer logon na página inicial. Se o SSL não estiver ativado, você receberá uma mensagem de erro na página inicial, mas não haverá impacto nas operações.


Qualquer pista sobre as possíveis razões ou sobre como reunir mais informações será muito apreciada. obrigado

Respostas:


133

Acontece quando os cabeçalhos de sua solicitação HTTP afirmam que o conteúdo é codificado em gzip, mas não é. Desative a configuração de codificação gzip ou verifique se o conteúdo está de fato codificado.


Isso corrigiu meu problema, obrigado. Só estou curioso para saber se alguém sabe se este é o erro que você obteria se o navegador que você usa não suporta compactação gzip?
Lightbulb1

6
Eu me deparei com esse problema quando o php estava exibindo um aviso de texto simples acima do conteúdo gzipado.
Mike Causer

Eu tive esse problema quando o arquivo de texto simples estava preso no cache do apache, mas os navegadores estavam esperando conteúdo compactado com gzip
Ljudevit

54

I habilitado zlib.output_compressionem php.inie parecia para corrigir o problema para mim.


Funcionou para mim também. (quercus-4.0.39 + glassfish4 + criar web-inf / php.ini manualmente.
Malcolm Boekhoff,

21

os códigos precisam salvar UTF8 sem BOM durante a gravação. Às vezes, ao escrever códigos com (Notepad ++) ou outras ferramentas de codificação e usar a codificação UTF8, esse erro ocorre. Desculpe, não sei inglês. Isso é apenas minha experiencia.


+1 Este era o meu problema também. Tive que fazer uma reinicialização forçada porque não apertei shift-escape rápido o suficiente :(. Ainda não sei por que o arquivo não foi codificado em utf-8 (texto sublime 3 compilação 3083). Padrões verificados e era utf- 8. Talvez eu acidentalmente aperte um ctrl-s-something para salvar em algum outro formato ...
R_Ice

7

Este erro foi causado por causa da extensão dos módulos de buffer de saída (ob_gzhandler) adicionada. Enquanto o buffer de saída usa ao iniciar ob_start () e terminar ob_flush ()

<?php   
    ob_start( 'ob_gzhandler' ); 
    echo json_encode($array);
    ob_end_flush();
?>

Usa isto:

<?php   
    ob_start(); 
    echo json_encode($array);
    ob_flush();
?>

Ele funciona junto com a habilitação de zlib.output_compression em php.ini. A propósito - [PHP.net] ( php.net/manual/en/function.ob-gzhandler.php ) observa que usar zlib.output_compression é preferível a ob_gzhandler ().
Kristjan Adojaan

5

Se você for usar o Codeigniterframework, basta transformá-lo em um arquivo de configuração:

$config['compress_output'] = FALSE;

E no php.iniarquivo de configuração, use:

zlib.output_compression=On

Na verdade, alterar o valor da diretiva php.ini faz a correção, pois isso irá forçar toda a saída a ser gzipped. A Codeigniterconfiguração irá definir o cabeçalho e cabe ao servidor de aplicativos da web impor isso na saída. Tentei definir $config['compress_output'] = TRUE, mantendo o zlib.output_compression=On. Tem o mesmo efeito. 1 para a direção.
codarrior

2

Você usa a ob_start(ob_gzhandler)função? Em caso afirmativo e se você gerar qualquer conteúdo acima da ob_start(ob_gzhandler)função, receberá este erro. Você não pode usar esta função ou não produzir conteúdo acima desta função. A ob_gzhandlerfunção de retorno de chamada determinará que tipo de codificação de conteúdo o navegador aceitará e retornará sua saída de acordo. Portanto, se você produzir conteúdo acima desta função, a codificação do conteúdo pode ser diferente do conteúdo de saída de ob_gzhandlere isso causa este erro.


2

No caso de alguém ainda caçar a causa desse problema odioso, existe uma solução para acertar o arquivo causador. https://www.drupal.org/node/1622904#comment-10768958 da Drupalcomunidade.

E cito:

Editar

includes/bootstrap.inc:

função drupal_load(). É uma função curta. Encontre a seguinte linha: include_once DRUPAL_ROOT . '/' . $filename; Substitua temporariamente por

ob_start();
include_once DRUPAL_ROOT . '/' . $filename;
$value = ob_get_contents();
ob_end_clean();
if ($value !== '') {
  $filename = check_plain($filename);
  $value = check_plain($value);
  print "File '$filename' produced unforgivable content: '$value'.";
  exit;
}

Obrigado por isso. Isso me ajudou a rastrear meu problema, eu tinha um módulo drupal personalizado que não tinha nenhum código nele. Adicionando <?phpcorrigido.
Sean Bannister

2

Mais uma ideia para quem está entendendo ...

Eu tinha alguns svg compactados com gzip, mas havia um erro de php na saída, o que causou essa mensagem de erro. (Porque havia texto no meio do binário gzip.) Corrigir o erro de php resolveu.


Concordo, verifique todos os logs de erros do PHP antes de ativar a compactação. Especialmente se você não desligou recentemente a compactação zlib e agora está recebendo o erro. Acabei de corrigir uma consulta de banco de dados inválida que estava causando o mesmo erro. A ativação zlib.output_compressionacabou de me dar um navegador cheio de caracteres inúteis.
Bert

2

Habilite a compactação gzip em php.ini :

zlib.output_compression = On

E adicione isso ao seu arquivo .htaccess :

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>

1

Eu estava tendo esse problema em um site e nenhuma das outras soluções neste tópico ajudou. Após alguma solução de problemas, descobri que o local.settings.php tinha uma tag de fechamento com um espaço depois disso:

<?php
$databases = array(
  'default' =>
  array (
    'default' =>
    array (
      'driver' => 'mysql',
      'database' => 'xxx',
      'username' => 'xxx',
      'password' => 'xxx',
      'port' => '',
      'host' => 'xxx',
    ),
  ),
);
?>
 

Atualizando local.settings.php para o seguinte resolvido:

<?php
$databases = array(
  'default' =>
  array (
    'default' =>
    array (
      'driver' => 'mysql',
      'database' => 'xxx',
      'username' => 'xxx',
      'password' => 'xxx',
      'port' => '',
      'host' => 'xxx',
    ),
  ),
);

A tag de fechamento "?>" Do PHP não é necessária aqui. Se você optar por usar uma tag de fechamento, você deve garantir que não haja caracteres / espaços em branco depois dela.


1

Tive um momento meio idiota esta manhã, quando percebi o que causou esse problema para mim.

O estranho é que a solicitação estava falhando no Firefox e no Chrome, mas funcionou quando tentei acessar pelo Fiddler Web Debugger.

Para mim, o problema era que eu havia digitado incorretamente um caractere em um dos arquivos PHP do projeto. Eu não percebi isso até verificar se há alterações no projeto no Git.

No meu caso eu tinha: m<?php runMyProgram(); ?>.

Assim que apaguei o m, ele começou a funcionar novamente.


um espaço em branco antes de abrir a tag php pode causar o mesmo erro.
deepcell

1

No meu caso, aconteceu ao adicionar um novo aplicativo ao IIS que precisava ser proxy com o Apache.

Eu precisava para definir ProxyHTMLEnable Ona ProxyHTMLEnable Offobter o conteúdo. (Parece que a maioria dos códigos js acionou o erro, mas isso me deu pelo menos algo para trabalhar.)

IIS está enviando o conteúdo da página Content-Encoding: gzip

<Proxy "http://192.168.1.1:81">
    ProxyHTMLEnable On   #> change this to Off
    ProxyHTMLURLMap  ...  ...
</Proxy>

0

Também tivemos esse problema ao atualizar nosso sistema para Revive. Após desligar o GZIP, descobrimos que o problema ainda persistia. Após uma investigação mais aprofundada, descobrimos que as permissões do arquivo não estavam corretas após a atualização. Um chmod recursivo simples resolveu o problema.



0

Uma resposta muito mais comum é que você tem algum erro que está sendo anexado a qualquer coisa que esteja compactando. A solução é definir display_errors = Offem seu arquivo php.ini (verifique em seu terminal se está ligado executando php --infoe procure por "display_errors")

Isso deve resolver. E como você descobre quais erros você está realmente? Verifique seus logs de erro de PHP sempre que você acessar essa rota / página.

Boa sorte!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.