2015-11-26 25 views
9

Zainstalowałem ponownie Apache i przełączyłem z PHP 5.3 na 5.6. Wszystko działa, z wyjątkiem uzyskać ten błąd, gdy dzwoni ob_start():Nie można użyć buforowania wyjściowego w buforujących wyjściach buforowanych procedurach wyświetlania

Cannot use output buffering in output buffering display handlers 

Próbowałem włączyć buforowanie wyjścia w PHP, ale wciąż otrzymuję ten błąd:

output_buffering = 4096 
+0

czy ponownie uruchomiłeś serwer WWW? – Calimero

+0

oczywiście. Wiele razy –

+0

Co do limitu pamięci w używanym php.ini, myślę, że jeśli ustawisz go na wyższą wartość, zadziała. – Wolfeh

Odpowiedz

1

Prawdopodobnie używasz funkcji buforowania w oddzwanianiu buforowania wyjścia, co nie jest możliwe, jak wspomniano w dokumentacji php ob_start output_callback. Jeśli nie, powinien to być użyty program obsługi wyjścia, sprawdź plik php.ini i spróbuj ustawić jego wartość na "none", jeśli to możliwe.

1

może ten przykładowy kod może pomóc:

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

Próbujesz uruchomić bufor wyjściowy wewnątrz zwrotnego buforowego. Jeśli użyjesz tego kodu, wygeneruje ten błąd. Ale jeśli usuniesz ob_start() z funkcji wywołania zwrotnego, to jest 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();