Error 330 (net :: ERR_CONTENT_DECODING_FAILED):

98

Recientemente migramos a un nuevo servidor. Después de 2 días, tengo los siguientes problemas

1) Tuvimos un bloqueo en una mesa de sesión, que arreglamos fácilmente reparándolo

2) Ejecutamos OpenX como nuestro servidor de anuncios, y también falló, pero no hay evidencia en error.log Te permite iniciar sesión, pero en el momento de mirar dashboard.php, obtenemos:

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

y

La página que está intentando ver no se puede mostrar porque utiliza una forma de compresión no válida o no admitida. (Firefox)


OpenX utiliza los siguientes servicios en PHP:

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

OpenX usa la configuración PHP predeterminada. Sin embargo, los administradores del servidor a veces cambian esta configuración. Antes de instalar OpenX, compruebe que las siguientes configuraciones sean correctas:

magic_quotes_runtime debe estar desactivado safe_mode debe estar desactivado register_argc_argv debe estar activado si desea ejecutar el mantenimiento a través de la línea de comando file_uploads debe estar activado para permitir la carga de archivos HTTP OpenX requiere las siguientes extensiones PHP:

O la mysqlextensión o el pgsql. La mysqliextensión no es compatible. La extensión ZLib, para convertir enlaces dentro de archivos Flash comprimidos generados por Flash MX. La extensión FTP. Si esto no está presente, OpenX intentará simularlo, lo que puede ser una solución menos estable.

La extensión GD, para generar gráficos en la página de inicio. Si la extensión no está habilitada, no podrá ver gráficos o estadísticas en su página de inicio. Se requiere la extensión openssl o una extensión curl habilitada para SSL para iniciar sesión en la página de inicio. Si SSL no está habilitado, recibirá un mensaje de error en la página de inicio, pero no hay impacto en las operaciones.


Cualquier pista sobre posibles motivos o sobre cómo recopilar más información será muy apreciada. Gracias

user1929691
fuente

Respuestas:

133

Ocurre cuando los encabezados de su solicitud HTTP afirman que el contenido está codificado en gzip, pero no lo es. Desactive la configuración de codificación gzip o asegúrese de que el contenido esté realmente codificado.

EL ÚNICO
fuente
Esto solucionó mi problema gracias. Solo tengo curiosidad por saber si alguien sabe si este es el error que obtendría si el navegador que usa no admite la compresión gzip.
Bombilla 1
6
Me encontré con este problema cuando php mostraba una advertencia de texto sin formato sobre el contenido comprimido con gzip.
Mike Causer
Tuve este problema cuando el archivo de texto sin formato estaba atascado en la caché de Apache, pero los navegadores esperaban contenido comprimido con gzip
Ljudevit
54

He activado zlib.output_compressionen php.iniy parecía para solucionar el problema para mí.

Francisco Cortes
fuente
También funcionó para mí. (quercus-4.0.39 + glassfish4 + crear web-inf / php.ini manualmente.
Malcolm Boekhoff
21

Los códigos deben guardar UTF8 sin BOM durante la grabación. A veces, los códigos escritos con (Notepad ++) u otras herramientas de codificación y usan codificación UTF8, se produce este error. Lo siento, no sé inglés. Esta es solamente mi experiencia.

user259374
fuente
+1 Este también era mi problema. Tuve que hacer un reinicio completo porque no presioné shift-escape lo suficientemente rápido :(. Todavía no sé por qué el archivo no estaba codificado en utf-8 (sublime text 3 build 3083). Revisé los valores predeterminados y era utf- 8. Tal vez accidentalmente
presioné
7

Este error se debe a que se agregó la extensión de los módulos de búfer de salida (ob_gzhandler). Mientras se utiliza el búfer de salida al iniciar ob_start () y finalizar ob_flush ()

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

Utilizar este:

<?php   
    ob_start(); 
    echo json_encode($array);
    ob_flush();
?>
sankar muniyappa
fuente
Funciona junto con la habilitación de zlib.output_compression en php.ini. Por cierto, [PHP.net] ( php.net/manual/en/function.ob-gzhandler.php ) señala que se prefiere usar zlib.output_compression sobre ob_gzhandler ().
Kristjan Adojaan
5

Si va a utilizar el Codeignitermarco, simplemente conviértalo en el archivo de configuración:

$config['compress_output'] = FALSE;

Y en el php.iniarchivo de configuración, use:

zlib.output_compression=On
Kaushik Dey
fuente
En realidad, cambiar el valor de la directiva php.ini soluciona el problema, ya que al hacerlo se exigirá que toda la salida sea gzipped. La Codeigniterconfiguración establecerá el encabezado y depende del servidor de aplicaciones web hacer cumplir eso en la salida. Traté de configurar $config['compress_output'] = TRUEmientras mantenía el zlib.output_compression=On. Tiene el mismo efecto. +1 para la dirección.
codarrior
2

¿Usas la ob_start(ob_gzhandler)función? Si es así y si genera contenido por encima de la ob_start(ob_gzhandler)función, obtendrá este error. No puede utilizar esta función o no generar contenido por encima de esta función. La ob_gzhandlerfunción de devolución de llamada determinará qué tipo de codificación de contenido aceptará el navegador y devolverá su salida en consecuencia. Entonces, si genera contenido por encima de esta función, la codificación del contenido puede ser diferente del contenido de salida de ob_gzhandlery eso causa este error.

linjie
fuente
2

En caso de que alguien siga buscando la causa de este odioso problema, existe una solución para resolver el problema. https://www.drupal.org/node/1622904#comment-10768958 de la Drupalcomunidad.

Y cito:

Editar

includes/bootstrap.inc:

función drupal_load(). Es una función corta. Encuentre la siguiente línea: include_once DRUPAL_ROOT . '/' . $filename; Reemplácela temporalmente 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;
}
Hao
fuente
Gracias por esto. Esto me ayudó a rastrear mi problema, tenía un módulo drupal personalizado que no tenía código. Añadiendo <?phparreglado.
Sean Bannister
2

Una idea más para cualquiera que reciba esto ...

Tenía un svg comprimido con gzip, pero tenía un error de php en la salida, lo que provocó este mensaje de error. (Porque había texto en medio del binario gzip.) Arreglar el error de php lo solucionó.

Redzarf
fuente
De acuerdo, verifique todos sus registros de errores de PHP antes de activar la compresión. Especialmente si no desactivó recientemente la compresión zlib y ahora está recibiendo el error. Simplemente corrigió una consulta de base de datos incorrecta que estaba causando este mismo error. Habilitar zlib.output_compressionsolo me dio un navegador lleno de caracteres basura.
Bert
2

Habilite la compresión gzip en php.ini :

zlib.output_compression = On

Y agregue esto a su archivo .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>
kurdtpage
fuente
1

Estaba experimentando este problema en un site y ninguna de las otras soluciones en este hilo ayudaron. Después de solucionar algunos problemas, encontré que local.settings.php tenía una etiqueta de cierre con un espacio después de la siguiente manera:

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

Se resolvió la actualización de local.settings.php a lo siguiente:

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

La etiqueta PHP de cierre "?>" No es necesaria aquí. Si elige utilizar una etiqueta de cierre, debe asegurarse de que no haya caracteres / espacios en blanco después de ella.

Plátano
fuente
1

Tuve un momento un poco tonto esta mañana cuando me di cuenta de lo que me causó este problema.

Lo extraño es que la solicitud fallaba tanto en Firefox como en Chrome, pero funcionó cuando intenté acceder a través de Fiddler Web Debugger.

Para mí, el problema era que había escrito mal un carácter en uno de los archivos PHP del proyecto. No me di cuenta de esto hasta que verifiqué Git en busca de cambios en el proyecto.

En mi caso tuve: m<?php runMyProgram(); ?> .

Una vez que borré la m, comenzó a funcionar nuevamente.

Jeremy Noonan
fuente
un espacio en blanco antes de abrir la etiqueta php puede causar el mismo error.
deepcell
1

En mi caso, sucedió al agregar una nueva aplicación a IIS que necesitaba ser proxy con Apache.

Necesitaba conjunto ProxyHTMLEnable OndeProxyHTMLEnable Off para obtener el contenido. (Parece que algunos de los códigos js han desencadenado el error, pero esto me dio al menos algo con lo que trabajar).

IIS está enviando el contenido de la página Content-Encoding: gzip

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

También tuvimos este problema al actualizar nuestro sistema a Revive. Después de apagar GZIP, encontramos que el problema persistía. Tras una mayor investigación, encontramos que los permisos de archivo no eran correctos después de la actualización. Un simple chmod recursivo funcionó.

Wes
fuente
0

Una respuesta mucho más común es que tiene algún error que se agrega a lo que sea que comprima. La solución es configurar display_errors = Offsu archivo php.ini (Verifique en su terminal si está encendido ejecutandophp --info y busque "display_errors")

Deberias hacer eso. ¿Y cómo descubres qué errores eres en realidad? Verifique sus registros de errores de PHP cada vez que llegue a esa ruta / página.

¡Buena suerte!

tommymarshall
fuente