Невозможно использовать буферизацию вывода в обработчиках отображения буферизации вывода

я переустановил Apache и переключился с PHP 5.3 на 5.6. Все работает, кроме этой ошибки, при вызове ob_start():

Cannot use output buffering in output buffering display handlers

Я попытался включить буферизацию вывода в PHP, но я все еще получаю эту ошибку:

output_buffering = 4096

3 ответов


Вероятно, вы используете функцию буферизации в обратном вызове буферизации вывода, что невозможно, как указано в php ob_start output_callback документация. Если это не должен быть обработчик вывода, который вы использовали, проверьте свой php.ini и попробуйте установить его значение "нет", если это возможно.


вы пытаетесь запустить выходной буфер внутри обратного вызова буфера. Если вы используете этот код, он будет генерировать эту ошибку. Но если вы удалите ob_start() из функции обратного вызова-это нормально.

<?php
error_reporting(-1);

function callback($buffer){
    //you can't call ob_start here
    ob_start();
    return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();

возможно, этот пример кода может вам помочь:

ob_start();
echo "test";
$content = ob_get_contents();
ob_end_clean();
var_dump($content);