Erreur 330 (net :: ERR_CONTENT_DECODING_FAILED):

98

Récemment, nous avons migré vers un nouveau serveur. Après 2 jours, j'ai eu les problèmes suivants

1) Nous avons eu un crash sur une table de session, que nous avons facilement corrigé en la réparant

2) Nous exécutons OpenX en tant que serveur publicitaire, et il s'est également planté, mais il n'y a aucune preuve dans error.log Cela vous permet de vous connecter, mais au moment de regarder dashboard.php, nous obtenons le:

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

et

La page que vous essayez d'afficher ne peut pas être affichée car elle utilise une forme de compression non valide ou non prise en charge. (Firefox)


OpenX utilise les services suivants sur PHP:

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

OpenX utilise les paramètres PHP par défaut. Cependant, les administrateurs de serveur modifient parfois ces paramètres. Avant d'installer OpenX, vérifiez que les paramètres suivants sont corrects:

magic_quotes_runtime doit être désactivé safe_mode doit être désactivé register_argc_argv doit être activé si vous souhaitez exécuter la maintenance via la ligne de commande file_uploads doit être activé pour permettre les téléchargements de fichiers HTTP OpenX nécessite les extensions PHP suivantes:

Soit l' mysqlextension, soit l' extension pgsql. L' mysqliextension n'est pas prise en charge. L'extension ZLib, pour convertir des liens dans des fichiers Flash compressés générés par Flash MX. L'extension FTP. Si ce n'est pas le cas, OpenX essaiera de le simuler, ce qui peut être une solution moins stable.

L'extension GD, pour générer des graphiques sur la page d'accueil. Si l'extension n'est pas activée, vous ne pourrez pas afficher de graphiques ou de statistiques sur votre page d'accueil. L'extension openssl ou une extension curl compatible SSL sont nécessaires pour se connecter à la page d'accueil. Si SSL n'est pas activé, vous recevrez un message d'erreur sur la page d'accueil, mais il n'y a aucun impact sur les opérations.


Tout indice sur les raisons possibles ou sur la façon de recueillir plus d'informations sera très apprécié. Merci

user1929691
la source

Réponses:

133

Cela se produit lorsque les en-têtes de votre requête HTTP prétendent que le contenu est encodé au format gzip, mais ce n'est pas le cas. Désactivez le paramètre d'encodage gzip ou assurez-vous que le contenu est bien encodé.

LE SEUL
la source
Cela a résolu mon problème merci. Je suis juste curieux de savoir si quelqu'un sait si c'est l'erreur que vous obtiendriez si le navigateur que vous utilisez ne prend pas en charge la compression gzip?
Ampoule1
6
Je suis tombé sur ce problème lorsque php produisait un avertissement en texte brut au-dessus du contenu gzippé.
Mike Causer
J'ai eu ce problème lorsque le fichier de texte brut était coincé dans le cache Apache, mais les navigateurs attendaient du contenu gzippé
Ljudevit
54

J'ai activé zlib.output_compressiondans php.iniet il a semblé résoudre le problème pour moi.

Francisco Cortes
la source
A travaillé pour moi aussi. (quercus-4.0.39 + glassfish4 + créer manuellement web-inf / php.ini.
Malcolm Boekhoff
21

les codes doivent enregistrer UTF8 sans BOM pendant l'enregistrement. Parfois, des codes écrits avec (Notepad ++) ou d'autres outils de codage et utilisent l'encodage UTF8, cette erreur se produit. Je suis désolé, je ne connais pas l'anglais. c'est juste mon experience.

user259374
la source
+1 C'était aussi mon problème. J'ai dû faire un redémarrage dur parce que je n'ai pas appuyé assez rapidement sur shift-escape: (. Je ne sais toujours pas pourquoi le fichier n'était pas encodé en utf-8 (sublime text 3 build 3083). Vérifié les valeurs par défaut et c'était utf- 8. Peut-être que j'ai accidentellement frappé un ctrl-s-quelque chose pour enregistrer dans un autre format ...
R_Ice
7

Cette erreur est due à l'ajout de l'extension des modules de tampon de sortie (ob_gzhandler). Pendant la mise en mémoire tampon de sortie, utilisez au démarrage de ob_start () et à la fin de ob_flush ()

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

Utilisez ceci:

<?php   
    ob_start(); 
    echo json_encode($array);
    ob_flush();
?>
sankar muniyappa
la source
Cela fonctionne avec l'activation de zlib.output_compression dans php.ini. Au fait - [PHP.net] ( php.net/manual/en/function.ob-gzhandler.php ) note que l'utilisation de zlib.output_compression est préférable à ob_gzhandler ().
Kristjan Adojaan
5

Si vous devez utiliser le Codeigniterframework, transformez-le simplement en fichier de configuration:

$config['compress_output'] = FALSE;

Et dans le php.inifichier de configuration, utilisez:

zlib.output_compression=On
Kaushik Dey
la source
En fait, changer la valeur de la directive php.ini fait le correctif, car cela imposera à toutes les sorties de l'être gzipped. La Codeigniterconfiguration définira l'en-tête et c'est au serveur d'applications Web de l'appliquer dans la sortie. J'ai essayé de régler $config['compress_output'] = TRUEtout en gardant le zlib.output_compression=On. Cela a le même effet. +1 pour la direction.
codarrior
2

Utilisez-vous la ob_start(ob_gzhandler)fonction? Si tel est le cas et si vous affichez un contenu au-dessus de la ob_start(ob_gzhandler)fonction, vous obtiendrez cette erreur. Vous ne pouvez pas utiliser cette fonction ou ne pas afficher de contenu au-dessus de cette fonction. La ob_gzhandlerfonction de rappel déterminera le type de codage de contenu que le navigateur acceptera et renverra sa sortie en conséquence. Donc, si vous sortez du contenu au-dessus de cette fonction, le codage du contenu peut être différent du contenu de sortie de ob_gzhandleret cela provoque cette erreur.

Linjie
la source
2

Au cas où quelqu'un cherche encore la cause de ce problème haineux, il existe une solution pour clouer le fichier à l'origine. https://www.drupal.org/node/1622904#comment-10768958 de la Drupalcommunauté.

Et je cite:

Éditer

includes/bootstrap.inc:

fonction drupal_load(). C'est une courte fonction. Rechercher la ligne suivante: include_once DRUPAL_ROOT . '/' . $filename; Remplacez-la temporairement par

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
la source
Merci pour cela. Cela m'a aidé à localiser mon problème, j'avais un module drupal personnalisé qui ne contenait pas de code. L'ajout l'a <?phpcorrigé.
Sean Bannister
2

Une autre idée pour quiconque obtient ceci ...

J'avais un svg gzippé, mais il y avait une erreur php dans la sortie, ce qui a provoqué ce message d'erreur. (Parce qu'il y avait du texte au milieu du binaire gzip.) La correction de l'erreur php l'a résolue.

Redzarf
la source
D'accord, vérifiez tous vos journaux d'erreurs PHP avant d'activer la compression. Surtout si vous n'avez pas récemment désactivé la compression zlib et que vous obtenez maintenant l'erreur. Je viens de corriger une mauvaise requête DB qui causait cette même erreur. L'activation zlib.output_compressionm'a juste donné un navigateur plein de personnages de déchets.
Bert
2

Activez la compression gzip dans php.ini :

zlib.output_compression = On

Et ajoutez ceci à votre fichier .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
la source
1

Je rencontrais ce problème sur un site et aucune des autres solutions de ce fil n'a aidé. Après un dépannage, j'ai trouvé que local.settings.php avait une balise de fermeture avec un espace après comme ceci:

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

La mise à jour de local.settings.php aux éléments suivants a été résolue:

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

La balise PHP de fermeture "?>" N'est pas nécessaire ici. Si vous choisissez d'utiliser une balise de fermeture, vous devez vous assurer qu'il n'y a aucun caractère / espace après elle.

banane
la source
1

J'ai eu un moment factice ce matin quand j'ai réalisé ce qui avait causé ce problème pour moi.

La chose étrange est que la demande échouait à la fois dans Firefox et Chrome, mais a fonctionné lorsque j'ai essayé d'accéder via Fiddler Web Debugger.

Pour moi, le problème était que j'avais mal tapé un caractère dans l'un des fichiers PHP du projet. Je n'ai pas remarqué cela jusqu'à ce que j'aie vérifié Git pour les modifications apportées au projet.

Dans mon cas , j'avais: m<?php runMyProgram(); ?>.

Une fois que j'ai effacé le m, il a recommencé à fonctionner.

Jeremy Noonan
la source
un espace vide avant la balise php ouverte peut provoquer la même erreur.
deepcell
1

Dans mon cas, cela s'est produit lors de l'ajout d'une nouvelle application à IIS qui devait être mandatée avec Apache.

Je avais besoin de mettre ProxyHTMLEnable Onà ProxyHTMLEnable Offobtenir le contenu. (Il semble que la plupart du code js ait déclenché l'erreur, mais cela m'a donné au moins quelque chose sur lequel travailler.)

IIS envoie le contenu de la page Content-Encoding: gzip

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

Nous avons également eu ce problème lors de la mise à niveau de notre système vers Revive. Après avoir désactivé GZIP, nous avons constaté que le problème persistait. Après une enquête plus approfondie, nous avons constaté que les autorisations de fichier n'étaient pas correctes après la mise à niveau. Un simple chmod récursif a fait l'affaire.

Nous s
la source
0

Une réponse beaucoup plus courante est que vous avez une erreur qui s'ajoute à votre compression. La solution est de définir display_errors = Offdans votre fichier php.ini (Vérifiez dans votre terminal s'il est activé en exécutant php --infoet recherchez "display_errors")

Ça devrait le faire. Et, comment découvrez-vous quelles erreurs vous êtes réellement? Vérifiez vos journaux d'erreurs PHP chaque fois que vous accédez à cette route / page.

Bon luclk!

tommymarshall
la source