Apacheを再インストールし、PHP 5.3から5.6に切り替えました。ob_start()
を呼び出すときにこのエラーが発生することを除いて、すべてが機能します。
Cannot use output buffering in output buffering display handlers
PHPで出力バッファリングを有効にしようとしましたが、それでも次のエラーが発生します。
output_buffering = 4096
おそらく、php ob_start output_callback のドキュメントに記載されているように、出力バッファリングコールバックでバッファリング関数を使用している可能性があります。そうでない場合は、使用した出力ハンドラーである必要があります。php.iniを確認し、可能であればその値を「none」に設定してみてください。
バッファコールバック内で出力バッファを開始しようとしています。このコードを使用すると、そのエラーが生成されます。ただし、コールバック関数から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);