Как вызвать ob_gzhandler после того, как ob_start уже был вызван?

Я использую код из этот ответ минимизировать HTML, а затем ob_gzhandler сжать страницу (потому что mode_deflate отключен на моем общем сервере, и поэтому я не могу сжать в .htaccess):

function sanitize_output($buffer) {

$buffer = preg_replace('/[\r\n]+\s*/', '', $buffer);

return $buffer;
}

ob_start("sanitize_output");
if(!ob_start("ob_gzhandler")) ob_start();

И то и другое ob_start("sanitize_output") а также ob_start("ob_gzhandler") работают хорошо сами по себе, но их объединение приводит к ошибке кодирования контента:

введите описание изображения здесь

Что я могу сделать?

1

Решение

Вам нужно поставить ob_start("ob_gzhandler") до ob_start("sanitize_output")

function sanitize_output($buffer) {
$buffer = preg_replace('/[\r\n]+\s*/', '', $buffer);
return $buffer;
}
if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')){
ob_end_clean();
ob_start('ob_gzhandler');
ob_start("sanitize_output");
}
else {
ob_start();
}

Не забудьте использовать ob_end_flush(); в конце.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]