Какова причина ZLIB «Ошибка Zlib -2, выкачивающая данные»

Некоторые из моих сайтов становятся все, казалось бы, без причина, странные ошибки вроде этих:

[Пт, 06 ноября, 08: 29: 07.677505 2020] [deflate: error] [pid 23820: tid 140019129566976] [client XXX.XXX.XXX.XXX:XXXXX] AH01386: Zlib error -2 deflating data ( (null)), referer: https://www.XXX.XXX/XXX

Эти ошибки возникают на кажущихся случайными страницах и могут быть исправлены путем обновления исходного кода даже с помощью комментария. Кажется, каждое изменение исправляет это, но ошибка продолжает появляться.

Что я пробовал

После прочтения этого сообщения https://stackoverflow.com/questions/37952355/zlib-z-stream- error-deflating-data-in-apache-error-log , мы попытались перенести веб-сайт на другой сервер, обновив библиотеку zlib, используя более новую ОС сервера (debian), используя другую версию php (в настоящее время - 7.4) . В коде нет ничего, что использует функцию (g) zip. В .htaccess также нет ничего, кроме перенаправления.

Некоторая информация из phpinfo:

Configure command:
'./configure' '--enable-embed' '--prefix=/usr/local/php74' '--program-suffix=74' '--enable-fpm' '--with-fpm-systemd' '--enable-litespeed' '--with-config-file-scan-dir=/usr/local/php74/lib/php.conf.d' '--with-curl' '--enable-gd' '--with-gettext' '--with-jpeg' '--with-freetype' '--with-kerberos' '--with-openssl' '--with-mhash' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-pear' '--with-sodium=/usr/local' '--with-webp' '--with-xsl' '--with-zlib' '--with-zip' '--with-iconv=/usr/local' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--enable-sockets' '--enable-soap' '--enable-mbstring' '--enable-intl' 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/icu/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig'

ZLIB:
ZLib Support        enabled
Stream Wrapper      compress.zlib://
Stream Filter       zlib.inflate, zlib.deflate
Compiled Version    1.2.7
Linked Version      1.2.7

Directive                       | Local Value       | Master Value
------------------------------------------------------------
zlib.output_compression         | Off               | Off
zlib.output_compression_level   | -1                | -1
zlib.output_handler             | no value          | no value

При проверке ответа, который сайт получает от сервера, заголовок Content-Encoding устанавливается как gzip, что я считаю странным, поскольку (используя мои ограниченные знания DevOps) я думаю, что приведенная выше информация должна указывать на отказ от сжатия.

Я бы поделился некоторым кодом, но я не могу точно определить часть кода, которая кажется проблемой, и это кажется контрпродуктивным показывать весь код устаревшей кастомной CMS.

1
задан 10 November 2020 в 17:05
3 ответа

На нашем сайте была аналогичная проблема. При просмотре исходного кода страницы, полученного с сервера, мы заметили, что в какой-то момент он был просто обрезан. Мы исправили это, добавив вызов flush() вокруг точки отсечки.Не уверен, зачем это было нужно и почему это работало, если честно.

1
ответ дан 23 November 2020 в 08:29

У меня сегодня была эта ошибка. Отключение уведомлений PHP в верхней части страницы:

<?php error_reporting (E_ALL ^ E_NOTICE); ?>

решило проблему, хотя я не понял, почему.

0
ответ дан 25 May 2021 в 14:58

Для меня это было вызвано, когда размер веб-страницы был слишком большим и значение php.ini для output_bufferingбыло превышено. Буфер очищается рано, и вы получаете только частичную веб-страницу.

Вы можете установить более высокий предел для output_bufferingили выключить output_buffering, чтобы исправить это.

https://www.php.net/manual/en/outcontrol.configuration.php#ini.output-buffering

После этого обязательно перезапустите php. Перезапуск apache2 не загрузил новые настройки php.ini для меня, нужно было перезапустить php отдельно.

1
ответ дан 21 December 2021 в 19:05

Теги

Похожие вопросы