Errore 330 (net :: ERR_CONTENT_DECODING_FAILED):


98

Recentemente siamo passati a un nuovo server. Dopo 2 giorni, ho riscontrato i seguenti problemi

1) Si è verificato un arresto anomalo su un tavolo di sessione, che abbiamo risolto facilmente riparandolo

2) Eseguiamo OpenX come il nostro server di annunci, e si è anche bloccato, ma non ci sono prove in error.log Ti consente di accedere, ma al momento di guardare dashboard.php, otteniamo:

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

e

La pagina che stai tentando di visualizzare non può essere mostrata perché utilizza una forma di compressione non valida o non supportata. (Firefox)


OpenX utilizza i seguenti servizi su PHP:

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

OpenX utilizza le impostazioni PHP predefinite. Tuttavia, gli amministratori del server a volte modificano queste impostazioni. Prima di installare OpenX, verifica che le seguenti impostazioni siano corrette:

magic_quotes_runtime deve essere disattivato safe_mode deve essere disattivato register_argc_argv deve essere attivato se si desidera eseguire la manutenzione tramite riga di comando file_uploads deve essere attivato per consentire il caricamento di file HTTP OpenX richiede le seguenti estensioni PHP:

O l' mysqlestensione o il file pgsql. L' mysqliestensione non è supportata. L'estensione ZLib, per convertire i collegamenti all'interno di file Flash compressi generati da Flash MX. L'estensione FTP. Se questo non è presente, OpenX proverà a simularlo, che può essere una soluzione meno stabile.

L'estensione GD, per generare grafici nella Home page. Se l'estensione non è abilitata non potrai visualizzare grafici o statistiche nella tua Home page. Per accedere alla home page è necessaria l'estensione openssl o un'estensione curl abilitata SSL. Se SSL non è abilitato riceverai un messaggio di errore nella Home page, ma non ci sarà alcun impatto sulle operazioni.


Qualsiasi indizio su possibili ragioni o su come raccogliere maggiori informazioni sarà molto apprezzato. Grazie

Risposte:


133

Succede quando le intestazioni della tua richiesta HTTP affermano che il contenuto è codificato in gzip, ma non lo è. Disattiva l'impostazione di codifica gzip o assicurati che il contenuto sia effettivamente codificato.


Questo ha risolto il mio problema grazie. Sono solo curioso se qualcuno sa se questo è l'errore che otterresti se il browser che stai utilizzando non supporta la compressione gzip?
Lampadina 1

6
Mi sono imbattuto in questo problema quando php emetteva un avviso di testo normale sopra il contenuto gzip.
Mike Causer

Ho avuto questo problema quando il file di testo normale era bloccato nella cache di Apache, ma i browser si aspettavano contenuti compressi con gzip
Ljudevit

54

Ho attivato zlib.output_compressionin php.inie sembrava per risolvere il problema per me.


Ha funzionato anche per me. (quercus-4.0.39 + glassfish4 + crea web-inf / php.ini manualmente.
Malcolm Boekhoff

21

i codici devono salvare UTF8 senza BOM durante la registrazione. A volte, i codici scritti con (Notepad ++) o altri strumenti di codifica e utilizzano la codifica UTF8, si verifica questo errore. Mi dispiace, non so l'inglese. Questa è solo la mia esperienza.


+1 Questo era anche il mio problema. Ho dovuto fare un riavvio forzato perché non ho premuto shift-escape abbastanza velocemente :(. Ancora non so perché il file non fosse codificato utf-8 (sublime text 3 build 3083). Verificate le impostazioni predefinite ed era utf- 8. Forse ho
premuto

7

Questo errore è causato dall'aggiunta dell'estensione dei moduli di bufferizzazione dell'output (ob_gzhandler). Durante il buffering dell'output, utilizzare all'avvio di ob_start () e alla fine di ob_flush ()

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

Usa questo:

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

Funziona insieme all'abilitazione di zlib.output_compression in php.ini. Tra l'altro - [PHP.net] ( php.net/manual/en/function.ob-gzhandler.php ) nota che utilizzando zlib.output_compression è preferito rispetto ob_gzhandler ().
Kristjan Adojaan

5

Se devi utilizzare il Codeigniterframework, trasformalo nel file di configurazione:

$config['compress_output'] = FALSE;

E nel php.inifile di configurazione, usa:

zlib.output_compression=On

In realtà la modifica del valore della direttiva php.ini fa la correzione, poiché così facendo si imporrà che tutto l'output sia gzipped. La Codeigniterconfigurazione imposterà l'intestazione e spetta al server delle applicazioni Web applicarlo nell'output. Ho provato a impostare $config['compress_output'] = TRUEmantenendo il file zlib.output_compression=On. Ha lo stesso effetto. +1 per la direzione.
codarrior

2

Usi la ob_start(ob_gzhandler)funzione? Se è così e se esegui l'output di qualsiasi contenuto sopra la ob_start(ob_gzhandler)funzione, otterrai questo errore. Non è possibile utilizzare questa funzione o non visualizzare il contenuto sopra questa funzione. La ob_gzhandlerfunzione di callback determinerà il tipo di codifica del contenuto che il browser accetterà e restituirà il suo output di conseguenza. Quindi, se esegui l'output di contenuto sopra questa funzione, la codifica del contenuto potrebbe essere diversa dal contenuto di output ob_gzhandlere questo causa questo errore.


2

Nel caso in cui qualcuno stia ancora cercando la causa di questo odioso problema, arriva una soluzione per inchiodare il file che causa. https://www.drupal.org/node/1622904#comment-10768958 dalla Drupalcomunità.

E cito:

modificare

includes/bootstrap.inc:

funzione drupal_load(). È una breve funzione. Trova la riga seguente: include_once DRUPAL_ROOT . '/' . $filename; sostituiscila temporaneamente con

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;
}

Grazie per questo. Questo mi ha aiutato a rintracciare il mio problema, avevo un modulo drupal personalizzato che non conteneva codice. Aggiunta <?phprisolto.
Sean Bannister

2

Un'altra idea per chiunque altro ottenga questo ...

Avevo un file svg compresso con gzip, ma aveva un errore php nell'output, che ha causato questo messaggio di errore. (Perché c'era del testo nel mezzo del binario gzip.) La correzione dell'errore php lo ha risolto.


D'accordo, controlla tutti i log degli errori PHP prima di attivare la compressione. Soprattutto se di recente non hai disattivato la compressione zlib e ora ricevi l'errore. Ho appena risolto una query DB errata che causava lo stesso errore. L'abilitazione zlib.output_compressionmi ha appena dato un browser pieno di caratteri spazzatura.
Bert

2

Abilita la compressione gzip in php.ini :

zlib.output_compression = On

E aggiungilo al tuo file .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

Ho riscontrato questo problema su un file site e nessuna delle altre soluzioni in questo thread ha aiutato. Dopo un po 'di risoluzione dei problemi ho scoperto che local.settings.php aveva un tag di chiusura con uno spazio dopo in questo modo:

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

L'aggiornamento di local.settings.php al seguente è stato risolto:

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

Il tag PHP di chiusura "?>" Non è necessario qui. Se scegli di utilizzare un tag di chiusura, assicurati che non ci siano caratteri / spazi vuoti dopo di esso.


1

Questa mattina ho avuto un momento un po 'fittizio quando ho capito cosa mi ha causato questo problema.

La cosa strana è che la richiesta non andava a buon fine sia in Firefox che in Chrome, ma ha funzionato quando ho provato ad accedere tramite Fiddler Web Debugger.

Per me, il problema era che avevo digitato male un carattere in uno dei file PHP del progetto. Non l'ho notato fino a quando non ho controllato Git per le modifiche al progetto.

Nel mio caso ho avuto: m<?php runMyProgram(); ?>.

Una volta cancellata la m, ha ricominciato a funzionare.


uno spazio vuoto prima del tag php aperto può causare lo stesso errore.
deepcell

1

Nel mio caso è successo quando si aggiungeva una nuova applicazione a IIS che doveva essere inviata tramite proxy con Apache.

Avevo bisogno di serie ProxyHTMLEnable OnaProxyHTMLEnable Off per ottenere il contenuto. (Sembra che la maggior parte del codice js abbia attivato l'errore, ma questo mi ha dato almeno qualcosa su cui lavorare.)

IIS sta inviando il contenuto della pagina Content-Encoding: gzip

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

0

Abbiamo riscontrato questo problema anche durante l'aggiornamento del nostro sistema a Revive. Dopo aver disattivato GZIP abbiamo riscontrato che il problema persisteva. Dopo ulteriori indagini abbiamo riscontrato che i permessi dei file non erano corretti dopo l'aggiornamento. Un semplice chmod ricorsivo ha funzionato.



0

Una risposta molto più comune è che hai qualche errore che viene aggiunto a qualunque sia la tua compressione. La soluzione è impostare display_errors = Offnel file php.ini (controlla nel tuo terminale se è attivo eseguendophp --info e cerca "display_errors")

Dovrebbe bastare. E come fai a scoprire quali errori stai effettivamente? Controlla i log degli errori PHP ogni volta che raggiungi quella rotta / pagina.

Bravo luclk!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.