Некоторые из моих сайтов становятся все, казалось бы, без причина, странные ошибки вроде этих:
[Пт, 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.
На нашем сайте была аналогичная проблема. При просмотре исходного кода страницы, полученного с сервера, мы заметили, что в какой-то момент он был просто обрезан. Мы исправили это, добавив вызов flush() вокруг точки отсечки.Не уверен, зачем это было нужно и почему это работало, если честно.
Для меня это было вызвано, когда размер веб-страницы был слишком большим и значение 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 отдельно.