Помилка 330 (нетто: ERR_CONTENT_DECODING_FAILED):


98

Нещодавно ми перейшли на новий сервер. Через 2 дні я отримав такі випуски

1) У нас відбувся збій на сесійному столі, який ми легко виправили, повторивши його

2) Ми запускаємо OpenX як наш рекламодавець, і він також вийшов з ладу, але в Error.log немає ніяких доказів. Це дозволить вам увійти, але в момент перегляду 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 повинен бути увімкнутий, якщо ви хочете запустити технічне обслуговування через командний рядок. Файл_uploads потрібно включити, щоб дозволити завантаження файлів HTTP OpenX вимагає таких розширень PHP:

Або mysqlрозширення, або pgsql. mysqliРозширення не підтримується. Розширення ZLib для перетворення посилань всередині стислих файлів Flash, породжених файлами Flash MX. Розширення FTP Якщо цього немає, OpenX спробує моделювати його, що може бути менш стабільним рішенням.

Розширення GD для створення графіків на домашній сторінці. Якщо розширення не ввімкнено, ви не зможете переглядати графіки чи статистику на своїй домашній сторінці. Для входу на домашню сторінку потрібні або розширення openssl, або розширення curl з підтримкою SSL. Якщо SSL не ввімкнено, ви отримаєте повідомлення про помилку на домашній сторінці, але це не вплине на операції.


Будь-яка підказка про можливі причини чи про те, як зібрати більше інформації, буде дуже вдячна. Дякую

Відповіді:


133

Це трапляється, коли заголовки вашого запиту HTTP заявляють, що вміст закодовано в gzip, але це не так. Вимкніть налаштування кодування gzip або переконайтесь, що вміст фактично закодовано.


Це вирішило моє питання, дякую. Мені просто цікаво, якщо хтось знає, чи це помилка, яку ви отримаєте, якщо браузер, який ви використовуєте, не підтримує стиснення gzip?
Лампочка1

6
Я зіткнувся з цією проблемою, коли php виводив звичайне текстове попередження над вмістом gzipped.
Майк Каузер

У мене була ця проблема, коли звичайний текстовий файл застряг у кеші apache, але браузери очікували gzipped вмісту
Ljudevit


21

Коди повинні зберігати UTF8 без BOM під час запису. Іноді, в письмових кодах (Notepad ++) або інших інструментах кодування та використанні кодування UTF8 ця помилка виникає. Вибачте, я не знаю англійської. Це лише мій досвід.


+1 Це була і моя проблема. Довелося зробити важку перезавантаження, тому що я не потрапив shift-escape досить швидко :(. Досі не знаю, чому файл не був закодований utf-8 (піднесений текст 3 build 3083). 8. Можливо, я випадково потрапив у клавішу ctrl-s-щось, щоб зберегти її в якомусь іншому форматі ...
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 ().
Крістіян Адоджаан

5

Якщо ви хочете використовувати Codeigniterрамку, то просто введіть це у файл конфігурації:

$config['compress_output'] = FALSE;

А у php.iniфайлі конфігурації використовуйте:

zlib.output_compression=On

Фактично зміна значення директиви php.ini робить виправлення, оскільки це буде виконувати всі результати, які будуть gzipped. 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виправлено.
Шон Банністер

2

Ще одна ідея для всіх, хто отримує це ...

У мене був якийсь gzipped svg, але у виході була помилка php, яка спричинила це повідомлення про помилку. (Тому що в середині gzip двійкового тексту був текст.) Виправлення помилки php вирішило її.


Погоджено, перевірте всі ваші журнали помилок PHP, перш ніж увімкнути стиснення. Особливо, якщо ви нещодавно не вимикали стиснення zlib, а тепер отримуєте помилку. Просто виправлено поганий запит БД, який спричинив цю саму помилку. Включення 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.

Для мене проблема полягала в тому, що я неправильно набрав символу в один із 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>

0

Ми також мали цю проблему під час оновлення нашої системи до Revive. Після повороту GZIP ми виявили, що проблема все ще зберігається. При подальшому дослідженні ми знайшли дозволи файлу, де не оновлено після оновлення. Простий рекурсивний chmod зробив свою справу.



0

Набагато більш поширеною відповіддю є те, що у вас є помилка, яка додається до будь-якого стискання. Рішення полягає у встановленні display_errors = Offу файлі php.ini (Перевірте у своєму терміналі, чи він увімкнено, запустивши php --infoі шукайте "display_errors")

Це повинно це робити. І як ви дізнаєтеся, які помилки ви є насправді? Перевірте свої журнали помилок PHP кожного разу, коли ви потрапляєте на цей маршрут / сторінку.

Гарного удачі!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.