Cannot use output buffering in output buffering display handlers

Iter Ator picture Iter Ator · Nov 26, 2015 · Viewed 17.5k times · Source

I've reinstalled Apache, and switched from PHP 5.3 to 5.6. Everything works, except I get this error, when calling ob_start():

Cannot use output buffering in output buffering display handlers

I tried to enable output buffering in PHP, but I still get this error:

output_buffering = 4096

Answer

Antony Thompson picture Antony Thompson · Dec 8, 2015

You're trying to start a output buffer inside a buffer callback. If you use this code, it will generate that error. But if you remove the ob_start() from the callback function it's OK.

<?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();