Lỗi 330 (net :: ERR_CONTENT_DECODING_FAILED):


98

Gần đây, chúng tôi đã chuyển sang một máy chủ mới. Sau 2 ngày, tôi gặp các vấn đề sau

1) Chúng tôi đã gặp sự cố trên bảng phiên, chúng tôi có thể dễ dàng khắc phục bằng cách sửa lại nó

2) Chúng tôi chạy OpenX làm máy chủ quảng cáo của chúng tôi và nó cũng bị lỗi, nhưng không có bằng chứng về lỗi .log Nó cho phép bạn đăng nhập, nhưng tại thời điểm tìm kiếm dashboard.php, chúng tôi nhận được:

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

Không thể hiển thị trang bạn đang xem vì nó sử dụng hình thức nén không hợp lệ hoặc không được hỗ trợ. (Firefox)


OpenX sử dụng các dịch vụ sau trên PHP:

OpenX yêu cầu: http://www.openx.com/docs/2.8/adminguide/System%20requirements

OpenX sử dụng cài đặt PHP mặc định. Tuy nhiên, quản trị viên máy chủ đôi khi thay đổi các cài đặt này. Trước khi bạn cài đặt OpenX, hãy kiểm tra xem các cài đặt sau có đúng không:

Magic_quotes_runtime phải tắt safe_mode phải tắt register_argc_argv phải bật nếu bạn muốn chạy bảo trì thông qua dòng lệnh file_uploads cần được bật để cho phép tải lên tệp HTTP OpenX yêu cầu các phần mở rộng PHP sau:

Hoặc là mysqlmở rộng, hoặc pgsql. Phần mysqlimở rộng không được hỗ trợ. Phần mở rộng ZLib, để chuyển đổi các liên kết bên trong các tệp Flash nén được tạo bởi Flash MX. Phần mở rộng FTP. Nếu điều này không xảy ra thì OpenX sẽ cố gắng mô phỏng nó, đây có thể là một giải pháp kém ổn định hơn.

Tiện ích mở rộng GD, để tạo đồ thị trên Trang chủ. Nếu tiện ích mở rộng không được bật, bạn sẽ không thể xem biểu đồ hoặc thống kê trên Trang chủ của mình. Cần có phần mở rộng openssl hoặc phần mở rộng curl hỗ trợ SSL để đăng nhập vào Trang chủ. Nếu SSL không được bật, bạn sẽ nhận được thông báo lỗi trong Trang chủ, nhưng không có tác động đến hoạt động.


Bất kỳ manh mối nào về lý do có thể có hoặc về cách thu thập thêm thông tin sẽ được đánh giá cao. Cảm ơn

Câu trả lời:


133

Điều này xảy ra khi tiêu đề yêu cầu HTTP của bạn tuyên bố rằng nội dung được mã hóa gzip, nhưng không phải vậy. Tắt cài đặt mã hóa gzip hoặc đảm bảo rằng nội dung trên thực tế đã được mã hóa.


Điều này đã khắc phục sự cố của tôi cảm ơn bạn. Tôi chỉ tò mò nếu có ai biết đây có phải là lỗi bạn sẽ gặp phải nếu trình duyệt bạn đang sử dụng không hỗ trợ nén gzip không?
Lightbulb1

6
Tôi đã gặp vấn đề này khi php đang xuất ra một cảnh báo văn bản thuần túy phía trên nội dung được nén.
Mike Causer

Tôi có vấn đề này khi tập tin văn bản đơn giản đã bị mắc kẹt trong apache cache, nhưng các trình duyệt đã dự đoán gzip nội dung
Ljudevit

54

Tôi kích hoạt zlib.output_compressiontrong php.inivà nó dường như khắc phục vấn đề đối với tôi.


Làm việc cho tôi quá. (quercus-4.0.39 + glassfish4 + tạo web-inf / php.ini theo cách thủ công.
Malcolm Boekhoff

21

mã cần lưu UTF8 mà không có BOM trong khi ghi. Đôi khi, các mã được viết bằng (Notepad ++) hoặc các công cụ mã hóa khác và sử dụng mã hóa UTF8, lỗi này xảy ra. Tôi xin lỗi, tôi không biết tiếng Anh. Đây chỉ là kinh nghiệm của tôi thôi.


+1 Đây cũng là vấn đề của tôi. Phải khởi động lại khó khăn vì tôi không nhấn shift-Escape đủ nhanh :(. Vẫn không biết tại sao tệp không được mã hóa utf-8 (sublime text 3 build 3083). Đã kiểm tra mặc định và nó là utf- 8. Có lẽ tôi đã vô tình nhấn ctrl-s-gì đó để lưu ở một số định dạng khác ...
R_Ice

7

Lỗi này gây ra do phần mở rộng mô-đun đệm đầu ra (ob_gzhandler) được thêm vào. Trong khi sử dụng bộ đệm đầu ra khi bắt đầu ob_start () và kết thúc ob_flush ()

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

Dùng cái này:

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

Nó hoạt động cùng với việc kích hoạt zlib.output_compression trong php.ini. Nhân tiện - [PHP.net] ( php.net/manual/en/ Chức năng.ob-gzhandler.php ) lưu ý rằng việc sử dụng zlib.output_compression được ưu tiên hơn ob_gzhandler ().
Kristjan Adojaan

5

Nếu bạn muốn sử dụng Codeigniterkhuôn khổ thì chỉ cần thực hiện điều này thành tệp cấu hình:

$config['compress_output'] = FALSE;

Và trong php.initệp cấu hình, hãy sử dụng:

zlib.output_compression=On

Trên thực tế, việc thay đổi giá trị chỉ thị php.ini sẽ khắc phục được sự cố, vì làm như vậy sẽ thực thi tất cả đầu ra gzipped. Các Codeignitercấu hình sẽ đặt tiêu đề và nó tùy thuộc vào các máy chủ ứng dụng web để thực thi mà trong đầu ra. Tôi đã cố gắng thiết lập $config['compress_output'] = TRUEtrong khi giữ zlib.output_compression=On. Nó có tác dụng tương tự. +1 cho hướng.
codarrior

2

Bạn có sử dụng ob_start(ob_gzhandler)chức năng? Nếu vậy và Nếu bạn xuất bất kỳ nội dung nào bên trên ob_start(ob_gzhandler)hàm, bạn sẽ gặp lỗi này. Bạn không thể sử dụng chức năng này hoặc không xuất nội dung bên trên chức năng này. Hàm ob_gzhandlergọi lại sẽ xác định loại nội dung mã hóa mà trình duyệt sẽ chấp nhận và sẽ trả về đầu ra của nó tương ứng. Vì vậy, nếu bạn xuất nội dung bên trên hàm này, mã hóa của nội dung có thể khác với nội dung đầu ra của ob_gzhandlervà gây ra lỗi này.


2

Trong trường hợp bất cứ ai vẫn đang tìm kiếm nguyên nhân của vấn đề đáng ghét này, có một giải pháp để đóng đinh hồ sơ nguyên nhân. https://www.drupal.org/node/1622904#comment-10768958 từ Drupalcộng đồng.

Và tôi trích dẫn:

Biên tập

includes/bootstrap.inc:

chức năng drupal_load(). Nó là một hàm ngắn. Tìm dòng sau: include_once DRUPAL_ROOT . '/' . $filename; Tạm thời thay thế nó bằng

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

Cảm ơn vì điều đó. Điều này đã giúp tôi tìm ra vấn đề của mình, tôi có một mô-đun drupal tùy chỉnh không có mã trong đó. Thêm đã <?phpsửa nó.
Sean Bannister

2

Thêm một ý tưởng cho những ai khác đang hiểu điều này ...

Tôi đã có một số svg được gzipped, nhưng nó có lỗi php trong đầu ra, gây ra thông báo lỗi này. (Vì có văn bản ở giữa tệp nhị phân gzip.) Việc sửa lỗi php đã giải quyết được vấn đề này.


Đồng ý, hãy kiểm tra tất cả nhật ký lỗi PHP của bạn trước khi bật tính năng nén. Đặc biệt nếu gần đây bạn không tắt tính năng nén zlib và hiện đang gặp lỗi. Vừa sửa một truy vấn DB không hợp lệ gây ra lỗi tương tự. Việc kích hoạt zlib.output_compressionchỉ cung cấp cho tôi một trình duyệt chứa đầy các ký tự rác.
Bert

2

Bật nén gzip trong php.ini :

zlib.output_compression = On

Và thêm nó vào tệp .htaccess của bạn :

<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

Tôi đã gặp sự cố này trên một trang web và không có giải pháp nào khác trong chủ đề này hữu ích. Sau một số khắc phục sự cố, tôi thấy local.settings.php có một thẻ đóng với khoảng trắng sau nó như sau:

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

Việc cập nhật local.settings.php lên thành phần sau đã được giải quyết:

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

Thẻ PHP đóng "?>" Là không cần thiết ở đây. Nếu bạn chọn sử dụng thẻ đóng, bạn phải đảm bảo không có ký tự / khoảng trắng sau thẻ.


1

Tôi đã có một chút bối rối vào sáng nay khi tôi nhận ra điều gì đã gây ra vấn đề này cho tôi.

Điều kỳ lạ là yêu cầu không thành công trong cả Firefox và Chrome, nhưng đã hoạt động khi tôi cố gắng truy cập qua Fiddler Web Debugger.

Đối với tôi, vấn đề là tôi đã nhập sai một ký tự vào một trong các tệp PHP trong dự án. Tôi đã không nhận thấy điều này cho đến khi tôi kiểm tra Git để tìm các thay đổi đối với dự án.

Trong trường hợp của tôi, tôi có: m<?php runMyProgram(); ?>.

Sau khi tôi xóa m, nó bắt đầu hoạt động trở lại.


một khoảng trống trước thẻ php mở có thể gây ra lỗi tương tự.
deepcell

1

Trong trường hợp của tôi, nó đã xảy ra khi thêm một ứng dụng mới vào IIS cần được ủy quyền với Apache.

Tôi cần đặt ProxyHTMLEnable OnthànhProxyHTMLEnable Off để có được nội dung. (Có vẻ như một số mã js hầu hết đã gây ra lỗi, nhưng điều này đã cho tôi ít nhất một cái gì đó để giải quyết.)

IIS đang gửi nội dung trang Content-Encoding: gzip

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

0

Chúng tôi cũng gặp sự cố này khi nâng cấp hệ thống của mình lên Hồi sinh. Sau khi chuyển GZIP, chúng tôi nhận thấy sự cố vẫn tiếp diễn. Khi điều tra thêm, chúng tôi đã tìm thấy các quyền đối với tệp không đúng sau khi nâng cấp. Một chmod đệ quy đơn giản đã thực hiện thủ thuật.



0

Một câu trả lời phổ biến hơn rất nhiều là bạn có một số lỗi đang được thêm vào bất cứ thứ gì bạn đang nén. Giải pháp là đặt display_errors = Offtrong tệp php.ini của bạn (Kiểm tra trong thiết bị đầu cuối của bạn nếu nó Bật bằng cách chạyphp --info và tìm "display_errors")

Nên làm vậy. Và, làm thế nào để bạn phát hiện ra những lỗi thực sự của bạn là gì? Kiểm tra nhật ký lỗi PHP của bạn bất cứ khi nào bạn truy cập vào tuyến đường / trang đó.

Chúc mừng!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.