web-dev-qa-db-fra.com

Impossible d'utiliser la mise en mémoire tampon de sortie dans les gestionnaires d'affichage de mise en mémoire tampon de sortie

J'ai réinstallé Apache et suis passé de PHP 5.3 à 5.6. Tout fonctionne, sauf que je reçois cette erreur en appelant ob_start():

Cannot use output buffering in output buffering display handlers

J'ai essayé d'activer la mise en tampon de sortie en PHP, mais j'obtiens toujours l'erreur suivante:

output_buffering = 4096
9
Iter Ator

Vous utilisez probablement une fonction de mise en mémoire tampon dans le rappel de mise en mémoire tampon de sortie, ce qui n'est pas possible comme indiqué dans php ob_start output_callback documentation. Si ce n'est pas le cas, c'est le gestionnaire de sortie que vous avez utilisé, vérifiez votre php.ini et essayez de définir sa valeur sur "none" si possible.

1
mow

Vous essayez de démarrer un tampon de sortie dans un rappel de tampon. Si vous utilisez ce code, cela générera cette erreur. Mais si vous supprimez la ob_start() de la fonction de rappel, tout va bien.

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

peut-être que cet exemple de code peut vous aider:

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