ข้อผิดพลาด 330 (net :: ERR_CONTENT_DECODING_FAILED):


99

เมื่อเร็ว ๆ นี้เราได้ย้ายไปยังเซิร์ฟเวอร์ใหม่ หลังจากผ่านไป 2 วันฉันพบปัญหาต่อไปนี้

1) เรามีข้อขัดข้องในตารางเซสชันซึ่งเราแก้ไขได้อย่างง่ายดายโดยการซ่อมแซมใหม่

2) เราเรียกใช้ OpenX เป็นเซิร์ฟเวอร์โฆษณาของเราและมันก็ล้มเหลวเช่นกัน แต่ไม่มีหลักฐานข้อผิดพลาดเข้าสู่ระบบให้คุณเข้าสู่ระบบ แต่ในขณะที่มองไปที่ dashboard.php เราจะได้รับ:

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

และ

ไม่สามารถแสดงหน้าที่คุณพยายามดูได้เนื่องจากใช้รูปแบบการบีบอัดที่ไม่ถูกต้องหรือไม่ได้รับการสนับสนุน (Firefox)


OpenX ใช้บริการต่อไปนี้บน PHP:

OpenX ต้องการ: http://www.openx.com/docs/2.8/adminguide/System%20requirements

OpenX ใช้การตั้งค่า PHP เริ่มต้น อย่างไรก็ตามบางครั้งผู้ดูแลระบบเซิร์ฟเวอร์จะเปลี่ยนการตั้งค่าเหล่านี้ ก่อนที่คุณจะติดตั้ง OpenX ให้ตรวจสอบว่าการตั้งค่าต่อไปนี้ถูกต้อง:

magic_quotes_runtime ต้องปิด safe_mode ต้องปิด register_argc_argv ต้องเปิดถ้าคุณต้องการเรียกใช้การบำรุงรักษาผ่านบรรทัดคำสั่งต้องเปิด file_uploads เพื่อให้การอัปโหลดไฟล์ HTTP OpenX ต้องใช้นามสกุล PHP ต่อไปนี้:

ทั้งส่วนขยายหรือmysql นามสกุลไม่สนับสนุน ส่วนขยาย ZLib เพื่อแปลงลิงก์ภายในไฟล์ Flash บีบอัดที่สร้างโดย. ส่วนขยาย FTP หากไม่มีอยู่ OpenX จะพยายามจำลองซึ่งอาจเป็นโซลูชันที่มีเสถียรภาพน้อยกว่าpgsqlmysqliFlash MX

ส่วนขยาย GD เพื่อสร้างกราฟในหน้าแรก หากไม่ได้เปิดใช้งานส่วนขยายคุณจะไม่สามารถดูกราฟหรือสถิติบนหน้าแรกของคุณได้ จำเป็นต้องใช้ส่วนขยาย openssl หรือส่วนขยาย curl ที่เปิดใช้งาน SSL เพื่อเข้าสู่ระบบโฮมเพจ หากไม่ได้เปิดใช้ SSL คุณจะได้รับข้อความแสดงข้อผิดพลาดในโฮมเพจ แต่ไม่มีผลกระทบต่อการดำเนินการ


เบาะแสเกี่ยวกับเหตุผลที่เป็นไปได้หรือวิธีการรวบรวมข้อมูลเพิ่มเติมจะได้รับการชื่นชมมาก ขอบคุณ

คำตอบ:


135

เกิดขึ้นเมื่อส่วนหัวของคำขอ HTTP ของคุณอ้างว่าเนื้อหามีการเข้ารหัส gzip แต่ไม่ใช่ ปิดการตั้งค่าการเข้ารหัส gzip หรือตรวจสอบว่ามีการเข้ารหัสเนื้อหาจริง


สิ่งนี้ช่วยแก้ปัญหาของฉันได้ขอบคุณ ฉันแค่อยากรู้ว่ามีใครรู้บ้างว่านี่เป็นข้อผิดพลาดที่คุณจะได้รับหากเบราว์เซอร์ที่คุณใช้ไม่รองรับการบีบอัด gzip?
Lightbulb1

6
ฉันพบปัญหานี้เมื่อ php แสดงคำเตือนข้อความธรรมดาเหนือเนื้อหาที่ถูกบีบอัด
Mike Causer

ฉันมีปัญหานี้เมื่อไฟล์ข้อความธรรมดาติดอยู่ในแคช apache แต่เบราว์เซอร์คาดว่าจะมีเนื้อหา gzipped
Ljudevit

54

ฉันเปิดใช้งานzlib.output_compressionในphp.iniและดูเหมือนว่ามันจะแก้ไขปัญหาสำหรับผม


ทำงานให้ฉันด้วย (quercus-4.0.39 + glassfish4 + สร้าง web-inf / php.ini ด้วยตนเอง
Malcolm Boekhoff

21

รหัสต้องบันทึก UTF8 โดยไม่มี BOM ขณะบันทึก บางครั้งรหัสที่เขียนด้วย (Notepad ++) หรือเครื่องมือเข้ารหัสอื่น ๆ และใช้การเข้ารหัส UTF8 ข้อผิดพลาดนี้จะเกิดขึ้น ฉันขอโทษฉันไม่รู้ภาษาอังกฤษ นี่เป็นเพียงประสบการณ์ของฉัน


+1 นี่คือปัญหาของฉันเช่นกัน ต้องทำการรีบูตอย่างหนักเพราะฉันไม่ได้กด shift-escape เร็วพอ :( ยังไม่รู้ว่าทำไมไฟล์ถึงไม่เข้ารหัส utf-8 (sublime text 3 build 3083) ตรวจสอบค่าเริ่มต้นแล้วมันเป็น utf- 8. บางทีฉันเผลอกด ctrl-s-something เพื่อบันทึกในรูปแบบอื่น ...
R_Ice

7

ข้อผิดพลาดนี้เกิดจากการเพิ่มส่วนขยายโมดูลบัฟเฟอร์เอาต์พุต (ob_gzhandler) ในขณะที่เอาต์พุตบัฟเฟอร์ใช้เมื่อเริ่มต้น ob_start () และสิ้นสุด ob_flush ()

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

ใช้สิ่งนี้:

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

ทำงานร่วมกับการเปิดใช้งาน zlib.output_compression ใน php.ini อย่างไรก็ตาม - [PHP.net] ( php.net/manual/en/function.ob-gzhandler.php ) ตั้งข้อสังเกตว่าควรใช้ zlib.output_compression มากกว่า ob_gzhandler ()
Kristjan Adojaan

5

หากคุณต้องการใช้Codeigniterเฟรมเวิร์กให้ทำเป็นไฟล์ config:

$config['compress_output'] = FALSE;

และในphp.iniไฟล์กำหนดค่าให้ใช้:

zlib.output_compression=On

อันที่จริงการเปลี่ยนแปลงphp.inigzippedค่าสั่งไม่แก้ไขให้ทำเช่นนั้นจะบังคับใช้การส่งออกทั้งหมดจะเป็น การCodeigniterกำหนดค่าจะตั้งค่าส่วนหัวและขึ้นอยู่กับเว็บแอ็พพลิเคชันเซิร์ฟเวอร์เพื่อบังคับใช้ในเอาต์พุต ฉันพยายามตั้งค่า$config['compress_output'] = TRUEในขณะที่เก็บไฟล์zlib.output_compression=On. ก็มีผลเช่นเดียวกัน +1 สำหรับทิศทาง
codarrior

2

คุณใช้ob_start(ob_gzhandler)ฟังก์ชันหรือไม่? ในกรณีนี้และหากคุณส่งออกเนื้อหาใด ๆ เหนือob_start(ob_gzhandler)ฟังก์ชันคุณจะได้รับข้อผิดพลาดนี้ คุณไม่สามารถใช้ฟังก์ชันนี้หรือไม่แสดงเนื้อหาเหนือฟังก์ชันนี้ ob_gzhandlerฟังก์ชันการเรียกกลับจะเป็นตัวกำหนดประเภทของเนื้อหาที่เข้ารหัสเบราเซอร์จะยอมรับและจะกลับมาส่งออกตามความเหมาะสม ดังนั้นหากคุณส่งออกเนื้อหาเหนือฟังก์ชันนี้การเข้ารหัสของเนื้อหาอาจแตกต่างจากเนื้อหาเอาต์พุตของob_gzhandlerและทำให้เกิดข้อผิดพลาดนี้


2

ในกรณีที่ใครก็ตามที่ยังคงค้นหาสาเหตุของปัญหาที่สร้างความเกลียดชังนี้มีวิธีแก้ปัญหาในการแก้ไขไฟล์สาเหตุ https://www.drupal.org/node/1622904#comment-10768958จากDrupalชุมชน

และฉันอ้างว่า:

แก้ไข

includes/bootstrap.inc:

drupal_load()ฟังก์ชัน มันเป็นฟังก์ชั่นสั้น ๆ ค้นหาบรรทัดต่อไปนี้: include_once DRUPAL_ROOT . '/' . $filename; แทนที่ด้วยชั่วคราว

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

ขอบคุณสำหรับสิ่งนี้. สิ่งนี้ช่วยให้ฉันติดตามปัญหาของฉันได้ฉันมีโมดูล drupal ที่กำหนดเองซึ่งไม่มีรหัสอยู่ เพิ่มการ<?phpแก้ไข
Sean Bannister

2

อีกหนึ่งไอเดียสำหรับใคร ๆ ที่ได้รับสิ่งนี้ ...

ฉันมี gzipped svg แต่มีข้อผิดพลาด php ในเอาต์พุตซึ่งทำให้เกิดข้อความแสดงข้อผิดพลาดนี้ (เนื่องจากมีข้อความอยู่ตรงกลางของ gzip binary) การแก้ไขข้อผิดพลาด php แก้ไขได้


ตกลงตรวจสอบบันทึกข้อผิดพลาด PHP ทั้งหมดของคุณก่อนเปิดการบีบอัด โดยเฉพาะอย่างยิ่งถ้าคุณไม่ได้ปิดการบีบอัด zlib เมื่อเร็ว ๆ นี้และตอนนี้ได้รับข้อผิดพลาด เพิ่งแก้ไขแบบสอบถาม DB ที่ไม่ดีซึ่งทำให้เกิดข้อผิดพลาดเดียวกันนี้ การเปิดใช้งานzlib.output_compressionทำให้ฉันมีเบราว์เซอร์ที่เต็มไปด้วยอักขระขยะ
เบิร์ต

2

เปิดใช้งานการบีบอัด gzip ในphp.ini :

zlib.output_compression = On

และเพิ่มสิ่งนี้ลงในไฟล์. 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

ฉันพบปัญหานี้ในไฟล์ ไซต์และไม่มีวิธีแก้ปัญหาอื่นใดในเธรดนี้ช่วย หลังจากการแก้ไขปัญหาบางอย่างฉันพบว่า local.settings.php มีแท็กปิดที่มีช่องว่างหลังจากนั้น:

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

การอัพเดต local.settings.php เพื่อแก้ไขดังต่อไปนี้:

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

แท็กปิด "?>" PHP ไม่จำเป็นที่นี่ หากคุณเลือกใช้แท็กปิดคุณต้องแน่ใจว่าไม่มีอักขระ / ช่องว่างต่อจากนั้น


1

เช้านี้ฉันมีช่วงเวลาที่น่าเบื่อเล็กน้อยเมื่อฉันรู้ว่าอะไรทำให้เกิดปัญหานี้

สิ่งที่แปลกคือคำขอล้มเหลวทั้งใน Firefox และ Chrome แต่ใช้งานได้เมื่อฉันพยายามเข้าถึงผ่าน Fiddler Web Debugger

สำหรับฉันแล้วปัญหาคือฉันพิมพ์อักขระผิดในไฟล์ PHP ในโครงการ ฉันไม่สังเกตเห็นสิ่งนี้จนกว่าฉันจะตรวจสอบ Git เพื่อดูการเปลี่ยนแปลงในโครงการ

ในกรณีของฉันฉันมี: m<?php runMyProgram(); ?>.

เมื่อฉันลบ m มันก็เริ่มทำงานอีกครั้ง


ช่องว่างก่อนเปิดแท็ก php อาจทำให้เกิดข้อผิดพลาดเดียวกัน
deepcell

1

ในกรณีของฉันมันเกิดขึ้นเมื่อเพิ่มแอปพลิเคชันใหม่ใน IIS ซึ่งจำเป็นต้องพร็อกซีกับ Apache

ผมจำเป็นต้องมีการตั้งค่าProxyHTMLEnable Onเพื่อProxyHTMLEnable Offที่จะได้รับเนื้อหา (ดูเหมือนว่าโค้ด js ส่วนใหญ่จะทริกเกอร์ข้อผิดพลาด แต่สิ่งนี้ทำให้ฉันมีบางอย่างที่ต้องดำเนินการ)

IIS กำลังส่งเนื้อหาของเพจ Content-Encoding: gzip

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

ฉันมีปัญหาเดียวกันวิธีแก้ปัญหาคือ ยกเลิกการตั้งค่าส่วนหัวการยอมรับเพื่อป้องกันไม่ให้เซิร์ฟเวอร์ "พร็อกซี" ส่งข้อมูล gzipped `` <Location / your_local_path /> RequestHeader ยกเลิกการตั้งค่า Accept-Encoding </Location> ``
Leles

0

เรามีปัญหานี้เช่นกันเมื่ออัปเกรดระบบของเราเป็น Revive หลังจากเปลี่ยน GZIP เราพบว่าปัญหายังคงมีอยู่ จากการตรวจสอบเพิ่มเติมเราพบสิทธิ์ของไฟล์ที่ไม่ถูกต้องหลังการอัปเกรด chmod แบบเรียกซ้ำง่าย ๆ ทำเคล็ดลับ



0

คำตอบที่พบบ่อยกว่านั้นคือคุณมีข้อผิดพลาดบางอย่างที่ต่อท้ายสิ่งที่คุณบีบอัด วิธีแก้ปัญหาคือการตั้งค่าdisplay_errors = Offในไฟล์ php.ini ของคุณ (ตรวจสอบในเทอร์มินัลของคุณว่าเปิดอยู่หรือไม่โดยเรียกใช้php --infoและมองหา "display_errors")

ที่ควรทำ และคุณจะค้นพบข้อผิดพลาดที่แท้จริงได้อย่างไร? ตรวจสอบบันทึกข้อผิดพลาด PHP ของคุณทุกครั้งที่คุณไปที่เส้นทาง / หน้านั้น

โชคดี!


0

ฉันเห็นข้อผิดพลาดนี้ร่วมกับโมดูล PageSpeed ​​ที่เปิดใช้งาน โมดูล PageSpeed ​​มีแคชที่สามารถบีบอัด gzip ได้ เห็นได้ชัดว่าสิ่งที่สามารถเกิดขึ้นได้คือเนื้อหาถูกบีบอัดสองครั้ง

ในการเขียนทรัพยากรใหม่ PageSpeed ​​ต้องแคชไว้ที่ฝั่งเซิร์ฟเวอร์ จนถึง 1.10.33.0 ทรัพยากรเหล่านี้ได้รับการจัดเก็บโดยไม่บีบอัด เพื่อลดการใช้ดิสก์ลดเวลาแฝงของเซิร์ฟเวอร์รองรับระดับการบีบอัดที่สูงขึ้นและเพิ่มทรูพุตของเซิร์ฟเวอร์ HTTPCache สามารถ gzip ทรัพยากรที่บีบอัดได้โดยอัตโนมัติเมื่อเก็บไว้ในแคช ในการกำหนดค่าการบีบอัดแคชให้ตั้งค่า HttpCacheCompressionLevel เป็นค่าระหว่าง -1 ถึง 9 โดย 0 ปิดอยู่ -1 เป็นการบีบอัดเริ่มต้นของ gzip และ 9 เป็นการบีบอัดสูงสุด ค่าเริ่มต้นคือ 9 การบีบอัดสูงสุด

ฉันแก้ไขได้โดยเพิ่มบรรทัดนี้ในการกำหนดค่า PageSpeed ​​ของฉัน:

HttpCacheCompressionLevel 0

ซึ่งปิดใช้งานการบีบอัด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.