Fehler 330 (net :: ERR_CONTENT_DECODING_FAILED):

98

Kürzlich haben wir auf einen neuen Server migriert. Nach 2 Tagen bekam ich folgende Probleme

1) Wir hatten einen Absturz auf einem Sitzungstisch, den wir leicht durch Reparieren beheben konnten

2) Wir führen OpenX als unseren Adserver aus und es ist ebenfalls abgestürzt, aber es gibt keine Hinweise in error.log. Sie können sich anmelden, aber im Moment des Blicks auf dashboard.php erhalten wir Folgendes:

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

und

Die Seite, die Sie anzeigen möchten, kann nicht angezeigt werden, da eine ungültige oder nicht unterstützte Form der Komprimierung verwendet wird. (Feuerfuchs)


OpenX verwendet die folgenden Dienste unter PHP:

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

OpenX verwendet die Standardeinstellungen für PHP. Serveradministratoren ändern diese Einstellungen jedoch manchmal. Überprüfen Sie vor der Installation von OpenX, ob die folgenden Einstellungen korrekt sind:

magic_quotes_runtime muss ausgeschaltet sein safe_mode muss ausgeschaltet sein register_argc_argv muss eingeschaltet sein, wenn Sie die Wartung über die Befehlszeile ausführen möchten. file_uploads müssen aktiviert sein, damit HTTP-Dateien hochgeladen werden können. OpenX benötigt die folgenden PHP-Erweiterungen:

Entweder die mysqlErweiterung oder die pgsql. Die mysqliErweiterung wird nicht unterstützt. Die ZLib-Erweiterung zum Konvertieren von Links in komprimierte Flash-Dateien, die von generiert wurden Flash MX. Die FTP-Erweiterung. Wenn dies nicht vorhanden ist, versucht OpenX, es zu simulieren, was eine weniger stabile Lösung sein kann.

Die GD-Erweiterung, um Diagramme auf der Startseite zu generieren. Wenn die Erweiterung nicht aktiviert ist, können Sie keine Grafiken oder Statistiken auf Ihrer Homepage anzeigen. Für die Anmeldung auf der Startseite ist entweder die openssl-Erweiterung oder eine SSL-fähige Curl-Erweiterung erforderlich. Wenn SSL nicht aktiviert ist, wird auf der Startseite eine Fehlermeldung angezeigt, die sich jedoch nicht auf den Betrieb auswirkt.


Jeder Hinweis auf mögliche Gründe oder wie man mehr Informationen sammelt, wird sehr geschätzt. Vielen Dank

user1929691
quelle

Antworten:

133

Es passiert, wenn die Header Ihrer HTTP-Anfrage behaupten, dass der Inhalt gzip-codiert ist, dies jedoch nicht. Deaktivieren Sie die Einstellung für die GZIP-Codierung oder stellen Sie sicher, dass der Inhalt tatsächlich codiert ist.

DER EINZIGE
quelle
Dies hat mein Problem behoben, danke. Ich bin nur neugierig, ob jemand weiß, ob dies der Fehler ist, den Sie erhalten würden, wenn der von Ihnen verwendete Browser die GZIP-Komprimierung nicht unterstützt.
Glühbirne1
6
Ich bin auf dieses Problem gestoßen, als PHP eine Klartextwarnung über dem komprimierten Inhalt ausgab.
Mike Causer
Ich hatte dieses Problem, als die Nur-Text-Datei im Apache-Cache steckte, aber die Browser erwarteten komprimierten Inhalt
Ljudevit
54

Ich ermöglichte zlib.output_compressionin php.iniund es schien das Problem für mich zu beheben.

Francisco Cortes
quelle
Hat auch für mich gearbeitet. (Quercus-4.0.39 + glassfish4 + erstellen Sie web-inf / php.ini manuell.
Malcolm Boekhoff
21

Codes müssen UTF8 während der Aufnahme ohne Stückliste speichern. Manchmal tritt dieser Fehler auf, wenn Codes mit (Notepad ++) oder anderen Codierungswerkzeugen geschrieben und UTF8-Codierung verwendet werden. Es tut mir leid, ich kann kein Englisch. Dies ist nur meine Erfahrung.

user259374
quelle
+1 Das war auch mein Problem. Musste einen harten Neustart durchführen, weil ich nicht schnell genug auf Shift-Escape geklickt habe :(. Ich weiß immer noch nicht, warum die Datei nicht utf-8-codiert war (sublime text 3 build 3083). Überprüfte Standardeinstellungen und es war utf- 8. Vielleicht habe ich versehentlich eine Strg-Taste gedrückt, um sie in einem anderen Format zu speichern ...
R_Ice
7

Dieser Fehler wurde durch die Erweiterung der Ausgabepuffermodule (ob_gzhandler) verursacht. Während der Ausgabepufferung wird beim Starten von ob_start () und beim Beenden von ob_flush () verwendet.

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

Benutze das:

<?php   
    ob_start(); 
    echo json_encode($array);
    ob_flush();
?>
Sankar Muniyappa
quelle
Es funktioniert zusammen mit der Aktivierung von zlib.output_compression in php.ini. Übrigens - [PHP.net] ( php.net/manual/en/function.ob-gzhandler.php ) stellt fest, dass die Verwendung von zlib.output_compression gegenüber ob_gzhandler () bevorzugt wird.
Kristjan Adojaan
5

Wenn Sie das CodeigniterFramework verwenden möchten, machen Sie dies einfach in die Konfigurationsdatei:

$config['compress_output'] = FALSE;

php.iniVerwenden Sie in der Konfigurationsdatei Folgendes:

zlib.output_compression=On
Kaushik Dey
quelle
Wenn Sie den Wert der Direktive php.ini tatsächlich ändern, wird das Problem behoben , da dadurch die gesamte Ausgabe erzwungen wird gzipped. Die CodeigniterKonfiguration setzt den Header und es ist Sache des Webanwendungsservers, dies in der Ausgabe zu erzwingen. Ich versuchte zu setzen, $config['compress_output'] = TRUEwährend ich das hielt zlib.output_compression=On. Es hat den gleichen Effekt. +1 für die Richtung.
Codarrior
2

Verwenden Sie die ob_start(ob_gzhandler)Funktion? Wenn ja und wenn Sie Inhalte über der ob_start(ob_gzhandler)Funktion ausgeben , wird dieser Fehler angezeigt. Sie können diese Funktion nicht verwenden oder Inhalte über dieser Funktion nicht ausgeben. Die ob_gzhandlerRückruffunktion bestimmt, welche Art von Inhaltscodierung der Browser akzeptiert, und gibt die Ausgabe entsprechend zurück. Wenn Sie also Inhalte über dieser Funktion ausgeben, unterscheidet sich die Codierung des Inhalts möglicherweise vom Ausgabeinhalt von ob_gzhandlerund verursacht diesen Fehler.

linjie
quelle
2

Für den Fall, dass noch jemand die Ursache für dieses hasserfüllte Problem sucht, gibt es eine Lösung, um die verursachende Datei zu finden. https://www.drupal.org/node/1622904#comment-10768958 von der DrupalCommunity.

Und ich zitiere:

Bearbeiten

includes/bootstrap.inc:

Funktion drupal_load(). Es ist eine kurze Funktion. Suchen Sie die folgende Zeile: include_once DRUPAL_ROOT . '/' . $filename; Ersetzen Sie sie vorübergehend durch

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
quelle
Danke dafür. Dies hat mir geholfen, mein Problem aufzuspüren. Ich hatte ein benutzerdefiniertes Drupal-Modul, das keinen Code enthielt. Hinzufügen <?phpbehoben.
Sean Bannister
2

Noch eine Idee für alle anderen, die das bekommen ...

Ich hatte einige gzipped svg, aber es hatte einen PHP-Fehler in der Ausgabe, der diese Fehlermeldung verursachte. (Weil sich in der Mitte von gzip binary Text befand.) Das Beheben des PHP-Fehlers hat das Problem behoben.

Redzarf
quelle
Überprüfen Sie alle PHP-Fehlerprotokolle, bevor Sie die Komprimierung aktivieren. Vor allem, wenn Sie die zlib-Komprimierung kürzlich nicht deaktiviert haben und jetzt den Fehler erhalten. Es wurde gerade eine fehlerhafte DB-Abfrage behoben, die denselben Fehler verursachte. Durch das Aktivieren erhielt zlib.output_compressionich nur einen Browser voller Müllzeichen.
Bert
2

Aktivieren Sie die gzip-Komprimierung in der php.ini :

zlib.output_compression = On

Und fügen Sie dies Ihrer .htaccess- Datei hinzu:

<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
quelle
1

Ich hatte dieses Problem bei einem Website und keine der anderen Lösungen in diesem Thread hat geholfen. Nach einiger Fehlerbehebung stellte ich fest, dass die Datei local.settings.php ein schließendes Tag mit einem Leerzeichen danach hatte:

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

Das Aktualisieren von local.settings.php auf Folgendes wurde behoben:

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

Das schließende PHP-Tag "?>" Ist hier nicht erforderlich. Wenn Sie ein schließendes Tag verwenden, müssen Sie sicherstellen, dass keine Zeichen / Leerzeichen dahinter stehen.

Banane
quelle
1

Ich hatte heute Morgen einen kleinen Dummy-Moment, als mir klar wurde, was dieses Problem für mich verursacht hat.

Das Seltsame ist, dass die Anfrage sowohl in Firefox als auch in Chrome fehlschlug, aber funktionierte, als ich versuchte, über den Fiddler Web Debugger darauf zuzugreifen.

Für mich war das Problem, dass ich ein Zeichen falsch in eine der PHP-Dateien im Projekt eingegeben hatte. Ich habe das erst bemerkt, als ich Git auf Änderungen am Projekt überprüft habe.

In meinem Fall hatte ich : m<?php runMyProgram(); ?>.

Sobald ich das m gelöscht hatte, fing es wieder an zu funktionieren.

Jeremy Noonan
quelle
Ein Leerzeichen vor dem Öffnen des PHP-Tags kann denselben Fehler verursachen.
Deepcell
1

In meinem Fall geschah dies beim Hinzufügen einer neuen Anwendung zu IIS, die mit Apache ersetzt werden musste.

Ich musste eingestellt ProxyHTMLEnable Onauf , ProxyHTMLEnable Offum den Inhalt zu bekommen. (Es sieht so aus, als hätten einige js-Codes den Fehler ausgelöst, aber das gab mir zumindest etwas, woran ich arbeiten konnte.)

IIS sendet den Seiteninhalt Content-Encoding: gzip

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

Wir hatten dieses Problem auch beim Upgrade unseres Systems auf Revive. Nach dem Ausschalten von GZIP stellten wir fest, dass das Problem weiterhin besteht. Bei weiteren Untersuchungen stellten wir fest, dass die Dateiberechtigungen nach dem Upgrade nicht korrekt waren. Ein einfacher rekursiver chmod hat es geschafft.

Wir s
quelle
0

Eine weitaus häufigere Antwort ist, dass Sie einen Fehler haben, der an Ihre Komprimierung angehängt wird. Die Lösung besteht darin, display_errors = Offin Ihrer php.ini-Datei festzulegen (Überprüfen Sie in Ihrem Terminal, ob es eingeschaltet ist, indem Sie ausführen php --infound suchen Sie nach "display_errors").

Das sollte es tun. Und wie entdecken Sie, welche Fehler Sie tatsächlich haben? Überprüfen Sie Ihre PHP-Fehlerprotokolle, wenn Sie diese Route / Seite erreichen.

Guter Luclk!

tommymarshall
quelle