2015-11-26 20 views
9

Tôi đã cài đặt lại Apache và chuyển từ PHP 5.3 sang 5.6. Mọi thứ hoạt động, ngoại trừ tôi nhận được lỗi này, khi gọi ob_start():Không thể sử dụng bộ đệm đầu ra trong bộ xử lý hiển thị bộ đệm đầu ra

Cannot use output buffering in output buffering display handlers 

tôi đã cố gắng để cho phép đầu ra đệm trong PHP, nhưng tôi vẫn nhận được lỗi này:

output_buffering = 4096 
+0

bạn đã khởi động lại máy chủ web chưa? – Calimero

+0

tất nhiên. Nhiều lần –

+0

Làm thế nào giới hạn bộ nhớ trong php.ini được sử dụng, tôi nghĩ rằng nếu bạn đặt nó vào một giá trị cao hơn nó sẽ làm việc. – Wolfeh

Trả lời

1

Có lẽ bạn đang sử dụng một chức năng đệm trong đầu ra đệm gọi lại mà không phải là có thể như đã đề cập trong php ob_start output_callback tài liệu. Nếu nó không phải là trình xử lý đầu ra bạn đã sử dụng, hãy kiểm tra php.ini của bạn và thử đặt giá trị của nó thành "none" nếu có thể.

1

có lẽ mẫu mã này có thể giúp bạn:

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

Bạn đang cố gắng để bắt đầu một bộ đệm đầu ra bên trong một callback đệm. Nếu bạn sử dụng mã này, nó sẽ tạo ra lỗi đó. Nhưng nếu bạn xóa ob_start() khỏi chức năng gọi lại thì 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(); 
Các vấn đề liên quan