问题
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
回答1:
Probably you are using a buffering function in output buffering callback which isn't possible as mentioned in php ob_start output_callback documentation. If not it should be the output-handler you used, check your php.ini and try to set it's value to "none" if possible.
回答2:
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();
回答3:
maybe this sample code can help you:
ob_start();
echo "test";
$content = ob_get_contents();
ob_end_clean();
var_dump($content);
来源:https://stackoverflow.com/questions/33936067/cannot-use-output-buffering-in-output-buffering-display-handlers