web-dev-qa-db-ja.com

出力バッファリング表示ハンドラで出力バッファリングを使用できません

Apacheを再インストールし、PHP 5.3から5.6に切り替えました。ob_start()を呼び出すときにこのエラーが発生することを除いて、すべてが機能します。

Cannot use output buffering in output buffering display handlers

PHPで出力バッファリングを有効にしようとしましたが、それでも次のエラーが発生します。

output_buffering = 4096
9
Iter Ator

おそらく、php ob_start output_callback のドキュメントに記載されているように、出力バッファリングコールバックでバッファリング関数を使用している可能性があります。そうでない場合は、使用した出力ハンドラーである必要があります。php.iniを確認し、可能であればその値を「none」に設定してみてください。

1
mow

バッファコールバック内で出力バッファを開始しようとしています。このコードを使用すると、そのエラーが生成されます。ただし、コールバック関数から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();
6
Antony Thompson

多分このサンプルコードはあなたを助けることができます:

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