Ситуация:
После последнего обновления перестал работать умный фильтр на паре сайтов. При выборе хоть чего-нибудь в фильтре, вместе с ответом возвращается ошибка
Возвращающий ответ код в component.php стандартный (на одном сайте кастомизированный компонент, на другом - штатный):
Файл ajax.php в шаблонах тоже стандартный и не модифицировался:
В заголовки рвётся кука BITRIX_SM_ABTEST_s1, я так понимаю из модуля A/B-тестирования, который установлен, но не задействован. При удалении модуля ошибка пропадает, но это же не выход. Вот буду я тестирование проводить, и что мне жить с неработающим фильтром всё это время?
Куку пытается записать CMain::FinalActions(), который, естественно, после тела ответа вызывается. На событие OnBeforeRestartBuffer записана только одна функция из ядра и она абсолютно точно ни при чём.
В общем я уже полдня сижу с этим, может глаз замылился. У меня, конечно, много вопросов по этому поводу, но самый главный:Что вообще тут происходит Есть какой-нибудь способ найти, где возникает такая кука (маловероятно, но всё-таки)? Ни в файле component.php, ни в class.php нет ни слова про такую куку или модуль A/B-теста (я не нашёл поиском).
Добавлено:
На всякий случай добавлю - на чистой установке такой проблемы не возникло.
После последнего обновления перестал работать умный фильтр на паре сайтов. При выборе хоть чего-нибудь в фильтре, вместе с ответом возвращается ошибка
Код |
---|
Cannot modify header information - headers already sent by (output started at /лалала/сайт.ру/bitrix/components/bitrix/catalog.smart.filter/component.php:937) in /лалала/сайт.ру/bitrix/modules/main/lib/httpresponse.php on line 153 |
Возвращающий ответ код в component.php стандартный (на одном сайте кастомизированный компонент, на другом - штатный):
Код |
---|
elseif(isset($_REQUEST["ajax"]) && $_REQUEST["ajax"] === "y") { $this->setFrameMode(false); ob_start(); $this->IncludeComponentTemplate("ajax"); $json = ob_get_contents(); $APPLICATION->RestartBuffer(); while(ob_end_clean()); header('Content-Type: application/x-javascript; charset='.LANG_CHARSET); echo $json; CMain::FinalActions(); die(); } |
Файл ajax.php в шаблонах тоже стандартный и не модифицировался:
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? $APPLICATION->RestartBuffer(); unset($arResult["COMBO"]); echo CUtil::PHPToJSObject($arResult, true); ?> |
В заголовки рвётся кука BITRIX_SM_ABTEST_s1, я так понимаю из модуля A/B-тестирования, который установлен, но не задействован. При удалении модуля ошибка пропадает, но это же не выход. Вот буду я тестирование проводить, и что мне жить с неработающим фильтром всё это время?
Куку пытается записать CMain::FinalActions(), который, естественно, после тела ответа вызывается. На событие OnBeforeRestartBuffer записана только одна функция из ядра и она абсолютно точно ни при чём.
В общем я уже полдня сижу с этим, может глаз замылился. У меня, конечно, много вопросов по этому поводу, но самый главный:
Добавлено:
На всякий случай добавлю - на чистой установке такой проблемы не возникло.