TinyMCE-compressor и HTTP_ACCEPT_ENCODING в nginx+php-fpm

Маразм крепчал. У меня все работало, у людей – нет. В чем же косяк? FireBug ругался на неожиданные символы и все бы было норм, но определить отчего и почему не представлялось возможным. Пришлось залогиниться к человеку по TeamViewer, и увидеть страшную картинку на gzip-компрессоре TinyMCE:

expects parameter to be array, null given

Эта строчка оповещала, что в коде:

// Check if it supports gzip
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
$encodings = explode(',', strtolower(preg_replace("/s+/", "", $_SERVER['HTTP_ACCEPT_ENCODING'])));

// Check if the server and client supports gzip compression
if ($this->settings['compress'] && (in_array('gzip', $encodings) || in_array('x-gzip', $encodings) || isset($_SERVER['---------------'])) && function_exists('gzencode') && !ini_get('zlib.output_compression')) {
[...]

Не определяется переменная $_SERVER[‘HTTP_ACCEPT_ENCODING’] , которая в свою очередь должна определятся сервером. Что у нас сервер – nginx? Как у нас работает php? В режиме fastcgi! Отсюда вывод, что необходимые параметры не передаются. Что делаем? Врубаем gzip и передаем параметры:

gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

# Some version of IE 6 don't handle compression well on some mime-types, so just disable for them
gzip_disable "MSIE [1-6].(?!.*SV1)";

# Set a vary header so downstream proxies don't send cached gzipped content to IE6
gzip_vary on;

И там где у нас передается SCRIPT_FILENAME, немного выше:

fastcgi_param HTTP_ACCEPT_ENCODING gzip,deflate,x-gzip;

И все в шоколаде! Юзвери довольны, я получил экспериенс, а товарищи с moxiecode получили еще 1 баг.

(C) ZonD80

2 thoughts on “TinyMCE-compressor и HTTP_ACCEPT_ENCODING в nginx+php-fpm

  1. JAGANATCH

    Эта заметка – проблеск надежды. У меня как раз проблема с отображением tinymce в админке сайта, которую никак не могу решить. Сервер на nginx+php-fpm.

    Поясните, пожалуйста, куда нужно вписать код, который вы привели? В конфиг виртуального хоста или в основной конфиг nginx или еще куда?

    Заранее спасибо.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *