Здравствуйте. Есть уже готовый сайт, на котором как минимум две недели никто не работал и вообще ничего не трогал. Внезапно, вчера сайт сломался. Front построен на ExtJS, как основа backend используется битрикс, но практически везде используются только кастомные SQL запросы, так как работа идет не с таблицами битрикса, но все равно в каждом php файле подключается prolog_before.php. Из-за него все и сломалось, в prolog_before вызывается функция CMain::PrologActions(); просто закомментив ее, все заработало (ну, относительно). Начал копать дальше, оказывается вся проблема в буферизации в /bitrix/modules/main/classes/general/main.php
if(COption::GetOptionString("main", "buffer_content", "Y")=="Y" && (!defined("BX_BUFFER_USED") || BX_BUFFER_USED!==true))
{
ob_start(array(&$APPLICATION, "EndBufferContent"));
$APPLICATION->buffered = true;
define("BX_BUFFER_USED", true);
register_shutdown_function(
function()
{
define("BX_BUFFER_SHUTDOWN", true);
for ($i=0, $n = ob_get_level(); $i < $n; $i++)
{
ob_end_flush();
}
}
);
}
Если закомментить этот if, то все начинает работать. Если буферизация будет работать, то просто ничего не выводится, а в network файлы, в которых есть запросы, просто ничего не возвращают. Кто-нибудь сталкивался с таким? Понятия не имею, что случилось то.
if(COption::GetOptionString("main", "buffer_content", "Y")=="Y" && (!defined("BX_BUFFER_USED") || BX_BUFFER_USED!==true))
{
ob_start(array(&$APPLICATION, "EndBufferContent"));
$APPLICATION->buffered = true;
define("BX_BUFFER_USED", true);
register_shutdown_function(
function()
{
define("BX_BUFFER_SHUTDOWN", true);
for ($i=0, $n = ob_get_level(); $i < $n; $i++)
{
ob_end_flush();
}
}
);
}
Если закомментить этот if, то все начинает работать. Если буферизация будет работать, то просто ничего не выводится, а в network файлы, в которых есть запросы, просто ничего не возвращают. Кто-нибудь сталкивался с таким? Понятия не имею, что случилось то.