Hata 330 (net :: ERR_CONTENT_DECODING_FAILED):


98

Kısa süre önce yeni bir sunucuya geçtik. 2 gün sonra aşağıdaki sorunları yaşadım

1) Bir oturum tablosunda, onu onararak kolayca düzelttiğimiz bir çökme yaşadık

2) OpenX'i reklam sunucumuz olarak çalıştırdık ve aynı zamanda çöktü, ancak error.log'da kanıt yok Giriş yapmanıza izin verin, ancak dashboard.php'ye baktığınız anda şunu alıyoruz:

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

ve

Görüntülemeye çalıştığınız sayfa, geçersiz veya desteklenmeyen bir sıkıştırma biçimi kullandığı için gösterilemiyor. (Firefox)


OpenX, PHP'de aşağıdaki hizmetleri kullanır:

OpenX şunları gerektirir: http://www.openx.com/docs/2.8/adminguide/System%20requirements

OpenX, varsayılan PHP ayarlarını kullanır. Ancak sunucu yöneticileri bazen bu ayarları değiştirir. OpenX'i kurmadan önce aşağıdaki ayarların doğru olup olmadığını kontrol edin:

magic_quotes_runtime kapalı olmalıdır safe_mode kapalı olmalıdır register_argc_argv komut satırı üzerinden bakım çalıştırmak istiyorsanız açık olmalıdır HTTP dosya yüklemelerine izin vermek için file_uploads'un açılması gerekir OpenX aşağıdaki PHP uzantılarını gerektirir:

Ya mysqluzantı ya da pgsql. mysqliUzatma desteklenmemektedir. ZLib uzantısı, tarafından oluşturulan sıkıştırılmış Flash dosyalarının içindeki bağlantıları dönüştürmek için Flash MX. FTP uzantısı. Bu mevcut değilse, OpenX bunu simüle etmeye çalışacaktır, bu daha az kararlı bir çözüm olabilir.

Ana sayfada grafikler oluşturmak için GD uzantısı. Uzantı etkinleştirilmezse, Ana sayfanızdaki grafikleri veya istatistikleri görüntüleyemezsiniz. Ana sayfada oturum açmak için ya openssl uzantısı ya da bir SSL etkin curl uzantısı gereklidir. SSL etkin değilse, Ana sayfada bir hata mesajı alırsınız, ancak işlemler üzerinde herhangi bir etkisi yoktur.


Olası nedenlerle veya daha fazla bilginin nasıl toplanacağıyla ilgili herhangi bir ipucu çok takdir edilecektir. Teşekkürler

Yanıtlar:


133

HTTP isteğinizin üstbilgileri içeriğin gzip olarak kodlandığını iddia ettiğinde, ancak değil. Gzip kodlama ayarını kapatın veya içeriğin gerçekten kodlanmış olduğundan emin olun.


Bu benim sorunumu çözdü, teşekkür ederim. Sadece, kullandığınız tarayıcı gzip sıkıştırmayı desteklemiyorsa, alacağınız hatanın bu olup olmadığını bilen var mı?
Lightbulb1

6
Bu sorunla php, gzipli içeriğin üzerinde düz bir metin uyarısı çıktığında karşılaştım.
Mike Causer

Düz metin dosyası apache önbelleğinde sıkıştığında bu sorunu yaşadım, ancak tarayıcılar gzipli içerik bekliyordu
Ljudevit

54

Ben etkinleştirilmiş zlib.output_compressioniçinde php.inive benim için sorunu çözmek gibiydi.


Benim için de çalıştı. (quercus-4.0.39 + glassfish4 + web-inf / php.ini'yi manuel olarak oluşturun.
Malcolm Boekhoff

21

kodların kayıt sırasında BOM olmadan UTF8'i kaydetmesi gerekir. Bazen (Notepad ++) veya diğer kodlama araçlarıyla yazılan kodlar ve UTF8 kodlaması kullanılır, bu hata oluşur. Üzgünüm ingilizce bilmiyorum. Bu sadece benim deneyimim.


+1 Bu benim de sorunumdu. Zor bir yeniden başlatma yapmak zorunda kaldım çünkü shift-escape'a yeterince hızlı basmadım :(. Hala dosyanın neden utf-8 kodlanmadığını bilmiyorum (sublime text 3 build 3083). Varsayılanlar kontrol edildi ve utf- 8. Belki başka bir formatta kaydetmek için yanlışlıkla ctrl-s-birşeyler
basmışımdır

7

Bu hata, çıktı arabelleğe alma modülleri uzantısı (ob_gzhandler) eklendiğinden kaynaklandı. Çıktı arabelleğe alırken ob_start () başlangıcında ve ob_flush () bitiminde kullanın

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

Bunu kullan:

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

Php.ini'de zlib.output_compression'u etkinleştirmekle birlikte çalışır. Bu arada - [PHP.net] ( php.net/manual/en/function.ob-gzhandler.php ) zlib.output_compression kullanmanın ob_gzhandler () yerine tercih edildiğini belirtir.
Kristjan Adojaan

5

CodeigniterÇerçeveyi kullanacaksanız, bunu yapılandırma dosyasına dönüştürün:

$config['compress_output'] = FALSE;

Ve php.iniyapılandırma dosyasında şunu kullanın:

zlib.output_compression=On

Aslında php.ini yönerge değerini değiştirmek, düzeltmeyi yapar, çünkü böyle yapmak tüm çıktının olmasını zorlar gzipped. CodeigniterYapılandırma başlığını ayarlayacaktır ve üretimdeki zorunlu kılmak amacıyla web uygulaması sunucusuna bağlıdır. Sette çalıştı $config['compress_output'] = TRUEtutarken zlib.output_compression=On. Aynı etkiye sahiptir. Yön için +1.
codarrior

2

ob_start(ob_gzhandler)İşlevi kullanıyor musunuz ? Eğer öyleyse ve ob_start(ob_gzhandler)işlevin üzerinde herhangi bir içerik çıkarırsanız , bu hatayı alırsınız. Bu işlevi kullanamaz veya bu işlevin üzerinde içerik çıkaramazsınız. Geri ob_gzhandlerçağırma işlevi, tarayıcının ne tür içerik kodlamasını kabul edeceğini belirler ve çıktısını buna göre döndürür. Dolayısıyla, bu işlevin üzerinde içerik çıkarırsanız, içeriğin kodlaması öğesinin çıktı içeriğinden farklı ob_gzhandlerolabilir ve bu da bu hataya neden olur.


2

Hala bu nefret dolu sorunun nedenini arayan birinin olması durumunda, neden olan dosyayı çivilemek için bir çözüm vardır. https://www.drupal.org/node/1622904#comment-10768958 gelen Drupaltopluluk.

Ve alıntı yapıyorum:

Düzenle

includes/bootstrap.inc:

işlevi drupal_load(). Kısa bir işlevdir. Aşağıdaki satırı bulun: include_once DRUPAL_ROOT . '/' . $filename; Geçici olarak değiştirin

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

Bunun için teşekkürler. Bu, sorunumu takip etmeme yardımcı oldu, içinde kod bulunmayan özel bir drupal modülüm vardı. Eklemek sorunu <?phpçözdü.
Sean Bannister

2

Bunu alan başkası için bir fikir daha ...

Bazı gzip'lenmiş svg'lerim vardı, ancak çıktıda bu hata mesajına neden olan bir php hatası vardı. (Çünkü gzip ikilisinin ortasında metin vardı.) Php hatasını düzeltmek sorunu çözdü.


Kabul edildi, sıkıştırmayı açmadan önce tüm PHP hata günlüklerinizi kontrol edin. Özellikle son zamanlarda zlib sıkıştırmasını kapatmadıysanız ve şimdi hatayı alıyorsanız. Aynı hataya neden olan hatalı bir DB sorgusu düzeltildi. Etkinleştirmek zlib.output_compressionbana sadece gereksiz karakterlerle dolu bir tarayıcı verdi.
Bert

2

Gzip sıkıştırması etkinleştirme php.ini :

zlib.output_compression = On

Ve bunu .htaccess dosyanıza ekleyin :

<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

Bu sorunu bir site ve bu başlıktaki diğer çözümlerin hiçbiri yardımcı olmadı. Bazı sorun giderme işlemlerinden sonra local.settings.php'nin, bunun gibi bir boşluk içeren bir kapanış etiketi olduğunu buldum:

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

Local.settings.php'nin şu şekilde güncellenmesi çözüldü:

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

Kapanış "?>" PHP etiketi burada gerekli değildir. Bir kapanış etiketi kullanmayı seçerseniz, ondan sonra hiçbir karakter / boşluk olmadığından emin olmalısınız.


1

Bu sabah benim için bu soruna neyin sebep olduğunu anladığımda biraz aptalca bir an yaşadım.

Garip olan şey, isteğin hem Firefox hem de Chrome'da başarısız olması, ancak Fiddler Web Debugger aracılığıyla erişmeye çalıştığımda işe yaramasıydı.

Benim için sorun, projedeki PHP dosyalarından birine bir karakteri yanlış yazmış olmamdı. Projedeki değişiklikler için Git'i kontrol edene kadar bunu fark etmedim.

Benim durumumda vardı: m<?php runMyProgram(); ?>.

M'yi sildikten sonra tekrar çalışmaya başladı.


açık php etiketinden önce boş bir alan aynı hataya neden olabilir.
deepcell

1

Benim durumumda bu, Apache ile proxy yapılması gereken IIS'ye yeni bir uygulama eklerken oldu.

Ayarlamam ProxyHTMLEnable OngerekiyorduProxyHTMLEnable Offİçeriği almak . (Çoğu js kodu hatayı tetiklemiş gibi görünüyor, ancak bu bana en azından çalışacak bir şey verdi.)

IIS, sayfa içeriğini gönderiyor Content-Encoding: gzip

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

0

Sistemimizi Revive'a yükseltirken de bu sorunu yaşadık. GZIP'yi çevirdikten sonra sorunun hala devam ettiğini gördük. Daha fazla araştırmanın ardından, yükseltmeden sonra doğru olmayan dosya izinlerini bulduk. Basit bir yinelemeli chmod hile yaptı.



0

Çok daha yaygın bir cevap, sıkıştırdığınız her şeye eklenen bazı hataların olmasıdır. Çözüm display_errors = Offphp.ini dosyanıza ayarlamaktır (Terminalinizin Açık olup olmadığını kontrol edin.php --info Çalıştırarak ve "display_errors" ı arayın)

Bunu yapmalı. Ve gerçekte hangi hataları yaptığınızı nasıl keşfedersiniz? Bu rotaya / sayfaya her vurduğunuzda PHP hata günlüklerinizi kontrol edin.

İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.